2017-07-13 6 views
0

Visual Studioのdatagridviewでvb.netで作業しています。DatagridviewのColumn BackColorをVB.netのRow BackColorをオーバーライドするように設定する

行は曜日です。行はすべてバックカラー(変数LightColour1とLightColour2)を代替し、週末の行は変数WeekendRowsColourになります。それだけで十分ですが、最終的な列全体を白くする必要があります。しかし、どのように私はそれに近づいて行の色を無効にすることはできません。何かアドバイス?

は、ここに私のコードセクションです:

For r = 0 To 27 
    dgv.Rows.Add() 
    dgv.Rows(r).Cells(0).Value = Format(nDate, "ddd") 
    dgv.Rows(r).Cells(1).Value = Format(nDate, "d/MM/yyyy") 
    If Format(nDate, "ddd") = "Sat" Or Format(nDate, "ddd") = "Sun" Then 
     dgv.Rows(r).DefaultCellStyle.BackColor = WeekendRowsColour 
     dgv.Rows(r).DefaultCellStyle.SelectionBackColor = WeekendRowsSelColour 
    Else 
     If r Mod 2 = 0 Then 'even row 
      dgv.Rows(r).DefaultCellStyle.BackColor = LightColour1 
      dgv.Rows(r).DefaultCellStyle.SelectionBackColor = SelLightColour1 
     Else 'alternate row 
      dgv.Rows(r).DefaultCellStyle.BackColor = LightColour2 
      dgv.Rows(r).DefaultCellStyle.SelectionBackColor = SelLightColour2 
     End If 
    End If 
    nDate = DateAdd(DateInterval.Day, 1, nDate) 
Next 
dgv.Columns(dgv.Columns.Count - 1).DefaultCellStyle.BackColor = Color.White 

しかし、私はそれに近づくどんなには、最後の列は、デフォルトの色を出してきます。私の最大の成功は、行のバックカラーと交互の背景色をプログラムで設定し、デザイナーで列のプロパティを白に設定することでしたが、交互の行や週末の色は上書きされませんでした。

ここに私の髪を引っ張ってください!

+0

たぶん、上書きされていない背景色とその最後の列のためのカスタムクラス?しかし、どのようにそれを行うか分からない。 – dya

答えて

0

あなたは、このようなセルあたりのループ内でそれを設定する必要があります。

For r = 0 To 27 
    dgv.Rows.Add() 
    dgv.Rows(r).Cells(0).Value = Format(nDate, "ddd") 
    dgv.Rows(r).Cells(1).Value = Format(nDate, "d/MM/yyyy") 
    If Format(nDate, "ddd") = "Sat" Or Format(nDate, "ddd") = "Sun" Then 
     dgv.Rows(r).DefaultCellStyle.BackColor = WeekendRowsColour 
     dgv.Rows(r).DefaultCellStyle.SelectionBackColor = WeekendRowsSelColour 
    Else 
     If r Mod 2 = 0 Then 'even row 
      dgv.Rows(r).DefaultCellStyle.BackColor = LightColour1 
      dgv.Rows(r).DefaultCellStyle.SelectionBackColor = SelLightColour1 
     Else 'alternate row 
      dgv.Rows(r).DefaultCellStyle.BackColor = LightColour2 
      dgv.Rows(r).DefaultCellStyle.SelectionBackColor = SelLightColour2 
     End If 
    End If 
    nDate = DateAdd(DateInterval.Day, 1, nDate) 

    dgv.Rows(r).Cells(dgv.Columns.Count-1).Style.BackColor = Color.White 
Next 
+0

BLOODY LEGEND!私はそれをしようとしていたが、私はセルのDefaultCellStyleプロパティを探していた。ありがとう、巨大な助け! – dya

関連する問題