在Datagridview中设置Column BackColor以覆盖VB.net中的Row BackColor

时间:2017-07-13 00:50:47

标签: vb.net visual-studio datagridview

在数据网格视图上的Visual Studio中的vb.net中工作。

行是星期几。所有行都交替使用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

但无论我如何处理它,最后一列都是默认颜色。我最大的成功是以编程方式设置行的背景颜色和alternaterowsbackcolor,并在设计器中将列属性设置为白色,但这不会覆盖交替的行或周末颜色。

把头发拉出来!

1 个答案:

答案 0 :(得分: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