Colors Devexpress gridcontrol更改所选行的颜色

Colors Devexpress gridcontrol更改所选行的颜色,colors,devexpress,rows,selected,gridcontrol,Colors,Devexpress,Rows,Selected,Gridcontrol,我正在使用FormatConditions根据某些行的属性设置其格式。例如,我有一个包含许多行的gridcontrol,当出现错误时,某些行被涂成红色。我遇到的问题是,当选择一行时,格式将消失并变为蓝色 我想选择的行颜色是一个稍微深一点的阴影,无论该行是什么颜色。也就是说,您仍然可以知道该行被着色为什么颜色,但也可以知道它已被选中 执行此操作的最佳方法是什么?我相信您需要通过处理GridView.CustomDrawCell事件手动执行此操作,并根据当前行状态设置行颜色。如果内存正常,您应该检查

我正在使用FormatConditions根据某些行的属性设置其格式。例如,我有一个包含许多行的gridcontrol,当出现错误时,某些行被涂成红色。我遇到的问题是,当选择一行时,格式将消失并变为蓝色


我想选择的行颜色是一个稍微深一点的阴影,无论该行是什么颜色。也就是说,您仍然可以知道该行被着色为什么颜色,但也可以知道它已被选中


执行此操作的最佳方法是什么?

我相信您需要通过处理
GridView.CustomDrawCell
事件手动执行此操作,并根据当前行状态设置行颜色。如果内存正常,您应该检查
RowCellCustomDrawEventArgs.Cell
属性以获取行状态信息

从您的问题中,您只需要修改选中行时的行为,这样,如果未选中该行,您就可以跳过自定义绘图(设置
e.Handled=False
),并且现有功能将继续保持不变。

处理并获取当前单元格的状态,无论它是否属于选定行

//获取单元格的状态-e。单元格提供对当前单元格的访问以进行绘制-

然后检查选定的行单元格

if ((state & GridRowCellState.Selected) == GridRowCellState.Selected)
{
// do your custrom drawing here.
// for example 
e.DisplayText = "";
e.Appearance.BorderColor = Color.White;
}
然后设置-
e.Handled=true或false根据您的要求自定义绘制单元后

浏览这些文档链接:


好的,因此我可以更改单元格的颜色,但如何获得FormatConditions指定的值?我已经尝试在e.Appearance.BackColor上使用if条件,但它看起来还没有用该颜色格式化单元格。也就是说,如果未选中的行被格式化为普通红色,我希望选中的行被暗显。您仍然可以知道该行被着色为什么颜色。。。关于这个
e.Cache
为您提供边框、背景等笔和画笔对象,帮助您获得颜色等。。您可以将formatconditions获取为:
GridView view=(GridView)sender;StyleFormatCondition1=view.FormatConditions[“nameofcondition”]确定,因此我可以更改单元格的颜色,但如何获得FormatConditions指定的值?我已经尝试在e.Appearance.BackColor上使用if条件,但它看起来还没有用该颜色格式化单元格。也就是说,如果未选中的行被格式化为普通红色,我希望选中的行被暗色化。
if ((state & GridRowCellState.Selected) == GridRowCellState.Selected)
{
// do your custrom drawing here.
// for example 
e.DisplayText = "";
e.Appearance.BorderColor = Color.White;
}