我正在使用 FormatConditions 根据它们的属性来格式化某些行。例如,我有一个带有许多行的网格控件,当出现错误时,有些行会显示为红色。The issue I have is that when a row is selected, the formatting disappears and goes blue.
我希望选定的行颜色比该行的颜色稍微深一点。即您仍然可以知道该行的阴影是什么颜色,但您也可以知道它已被选中。
最好的方法是什么?
我正在使用 FormatConditions 根据它们的属性来格式化某些行。例如,我有一个带有许多行的网格控件,当出现错误时,有些行会显示为红色。The issue I have is that when a row is selected, the formatting disappears and goes blue.
我希望选定的行颜色比该行的颜色稍微深一点。即您仍然可以知道该行的阴影是什么颜色,但您也可以知道它已被选中。
最好的方法是什么?
处理GridView.CustomDrawCell 事件并获取当前 Cell 的状态,它是否属于选定的行。
//获取单元格的状态 - e.Cell 提供对当前单元格进行绘制的访问-
GridRowCellState state = ((GridCellInfo)e.Cell).State;
然后检查选定的行单元格
if ((state & GridRowCellState.Selected) == GridRowCellState.Selected)
{
// do your custrom drawing here.
// for example
e.DisplayText = "";
e.Appearance.BorderColor = Color.White;
}
然后设置CustomDrawEventArgs.Handled 属性-e.Handled = true or false;
根据您的要求自定义绘制单元格后。
我相信您需要通过处理GridView.CustomDrawCell
事件并根据当前行状态设置行颜色来手动执行此操作。如果我没记错的话,您应该检查RowCellCustomDrawEventArgs.Cell
属性以获取行状态信息。
根据您的问题,您只需要修改选择行时的行为,因此e.Handled=False
如果未选择行并且您现有的功能将继续保持不变,您可以简单地跳过自定义绘制(设置)。