我想根据行的一个单元格的内容为System.Windows.Forms.DataGrid
的整行着色
我找不到任何方法,因为没有.Rows
- DataGrid的属性或.Row
- DataGridTextBoxColumn(或任何类似的)的属性。
到目前为止,在互联网上搜索解决方案也没有帮助我
不幸的是,切换到DataGridView
不是一种选择。
所以问题仍然存在:如何更改DataGrid行的颜色?
答案 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