如何修改DevExpress控件中GridControl(GridView)的行背景色
DevExpress GridView 任意行背景色修改方案
你之前使用的
GridView2.Appearance.FocusedRow.BackColor是全局焦点行样式配置,仅作用于当前选中的焦点行,无法实现指定任意行的样式自定义。
DevExpress GridControl 没有提供原生DataGridView那样直接修改指定行样式的属性,其渲染逻辑由事件驱动,可通过以下方案实现需求:
实现步骤
- 首先提前定义需要设置特殊背景色的行标识(可以是行号、行绑定数据的某个字段值等),示例以设置第10行(索引从0开始)背景色为红色为例:
' 全局定义需要高亮的行号列表 Dim highlightRowIndexes As New List(Of Integer) From {10}
- 为GridView绑定
RowStyle事件,在事件中判断当前行是否属于需要设置背景色的范围,赋值对应外观即可:
Private Sub GridView2_RowStyle(sender As Object, e As DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs) Handles GridView2.RowStyle ' 判断当前行索引是否在高亮列表中 If highlightRowIndexes.Contains(e.RowHandle) Then e.Appearance.BackColor = Color.Red ' 可选:禁止默认样式覆盖自定义设置 e.HighPriority = True End If End Sub
动态更新说明
如果需要运行时动态修改某行的背景色,只需要修改highlightRowIndexes列表的内容,然后调用以下代码触发GridView重绘对应行即可:
' 示例:运行时新增第5行设为高亮 highlightRowIndexes.Add(5) ' 刷新对应行触发重绘 GridView2.RefreshRow(5) ' 如果修改了多行,可调用全局刷新 ' GridView2.RefreshData()
其他适配场景
如果需要根据行绑定的数据源内容设置背景色,可在RowStyle事件中直接取行数据判断,不需要依赖行号:
Private Sub GridView2_RowStyle(sender As Object, e As DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs) Handles GridView2.RowStyle ' 跳过自动新增行、分组行等特殊行 If e.RowHandle < 0 Then Return ' 取当前行绑定的数据源对象,示例假设数据源为YourModel类,有Status字段 Dim rowData As YourModel = TryCast(GridView2.GetRow(e.RowHandle), YourModel) If rowData IsNot Nothing AndAlso rowData.Status = "异常" Then e.Appearance.BackColor = Color.LightCoral e.HighPriority = True End If End Sub
内容的提问来源于stack exchange,提问作者user16600932
相关产品推荐
相关产品推荐

