更改DataGrid行的颜色

时间:2016-02-22 14:58:31

标签: vb.net winforms datagrid .net-2.0

我想根据行的一个单元格的内容为System.Windows.Forms.DataGrid的整行着色 我找不到任何方法,因为没有.Rows - DataGrid的属性或.Row - DataGridTextBoxColumn(或任何类似的)的属性。
到目前为止,在互联网上搜索解决方案也没有帮助我 不幸的是,切换到DataGridView不是一种选择。

所以问题仍然存在:如何更改DataGrid行的颜色?

1 个答案:

答案 0 :(得分:0)

感谢this链接(由@Monty提供),我能够解决问题。

你必须自己格式化每个Cell,所以你必须连接每个列的SetCellFormat - 事件:

AddHandler column.SetCellFormat, AddressOf FormatGridRow

在EventHandler中,您可以检查同一行中另一列的单元格值,并相应地更改当前单元格的颜色。当行的每个单元格都以这种方式格式化时,似乎整个行都被格式化了。

Private Sub FormatGridRow(ByVal sender As Object, ByVal e As DataGridFormatCellEventArgs)
    Dim Cell As DataGridColumnStyle = sender
    Dim ColumnStyles As GridColumnStylesCollection = Cell.DataGridTableStyle.GridColumnStyles
    Dim columnIndex As Integer = ColumnStyles.IndexOf(ColumnStyles.Item("ColumnName"))

    If Cell.DataGridTableTableStyle.DataGrid(e.Row, columnIndex).ToString() = "SomeValue" Then
        e.BackBrush = New SolidBrush(Color.Red)  'this does only change the Cell`s background
    End If
End Sub