DatagridView:基于单元格值的颜色行

时间:2019-10-02 07:23:11

标签: vb.net visual-studio datagridview

我正在暴露我的问题... 我想给datagridview的行上色,以'LOTTO'列的值作为参考,直到它是相同的,交替两种颜色以方便阅读。

enter image description here

如您所见,它们通常从4变为4,但可以有所不同。因此,我要检查“ LOTTO”值

想法?谢谢!

1 个答案:

答案 0 :(得分:1)

我做了很多次,在您的情况下,它使用的是这样的功能:

Private Sub PaintAccValues()
    Dim Col1 As Color = Color.Beige
    Dim Col2 As Color = Color.Aquamarine
    Dim aCol As Color = Col1

    If Me.dgv.Rows.Count > 0 Then
        Me.dgv.Rows(0).DefaultCellStyle.BackColor = aCol   ' color background of the first row
        Dim RowVal As String = Me.dgv.Rows(0).Cells("Lotto").Value
        For ir = 1 To Me.dgv.Rows.Count - 1  ' notice we're starting on the 2nd line!
            If RowVal = Me.dgv.Rows(ir).Cells("Lotto").Value Then  ' following rows are same
                ' do nothing
            Else ' following rows differ (at the given column 'Lotto')
                If aCol = Col1 Then        ' change colors
                    aCol = Col2
                Else
                    aCol = Col1
                End If
            End If
            Me.dgv.Rows(ir).DefaultCellStyle.BackColor = aCol   ' color a row's background
            RowVal = Me.dgv.Rows(ir).Cells("Lotto").Value       ' set new actual value for a next row comparison
        Next
    End If
End Sub

您可以简单地称呼它:

Call PaintAccValues()

在某个方便的地方,例如,可能是DataBindingComplete()事件。

很遗憾,我不知道您的DataGridView或列的名称(您未提供任何代码)。您可以将其修改为仅对某些单元格进行着色等。也可以添加参数(DataGridViewName和ColumnName或ColumnIndex)并使它与任何DataGridView一起使用。