2012-02-16 225 views
3

我使用FormatConditions根據其屬性格式化某些行。例如。我有一個有很多行的網格控件,有一些行在出現錯誤時會着上紅色。我遇到的問題是,當選中一行時,格式會消失並變藍。Devexpress gridcontrol更改選定的行顏色

我希望選定的行顏色是行的任何顏色稍暗的陰影。即您仍然可以知道該行的陰影是什麼顏色,但您也可以知道它已被選中。

這樣做的最好方法是什麼?

回答

1

我相信你需要手動處理GridView.CustomDrawCell事件並根據當前行狀態設置行顏色。如果內存正確地爲我服務,則應檢查RowCellCustomDrawEventArgs.Cell屬性以獲取行狀態信息。

從您的問題中,您只需修改選中該行時的行爲,以便在未選擇該行並且現有功能將保持不變的情況下,您可以簡單地跳過自定義繪製(設置爲e.Handled=False)。

+0

好了,我可以改變細胞的顏色,但我怎麼能得到我的條件格式指定的值?我曾嘗試在e.Appearance.BackColor上使用if條件,但它看起來不像它用顏色格式化單元格。即如果未選中的行被格式化爲正常的紅色,我希望選中的一行是DarkRed。 – user832747 2012-02-23 07:02:59

2

處理GridView.CustomDrawCell Event並獲取當前單元格的狀態,它是否屬於選定的行。

//獲取細胞的國家 - 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 Property - e.Handled = true or false;根據您的需求自定義繪製單元格後。

經歷這些文檔鏈接:
Custom Painting Basics
Custom Painting Samples

+0

好的,我可以改變單元格的顏色,但是我怎麼能得到我的FormatConditions指定的值?我曾嘗試在e.Appearance.BackColor上使用if條件,但它看起來不像它用顏色格式化單元格。即如果未選中的行被格式化爲正常的紅色,我希望選中的一行是DarkRed。 – user832747 2012-02-23 06:59:19

+0

你仍然可以知道該行的陰影是什麼顏色...關於這個.. e.Cache給你的邊框,背景等筆和畫筆對象,這將幫助你獲得顏色等..你可以得到formatconditions as:'GridView view =(GridView)sender; StyleFormatCondition condition1 = view.FormatConditions [「nameofcondition」];' – 2012-02-23 07:12:46