我使用FormatConditions根據其屬性格式化某些行。例如。我有一個有很多行的網格控件,有一些行在出現錯誤時會着上紅色。我遇到的問題是,當選中一行時,格式會消失並變藍。Devexpress gridcontrol更改選定的行顏色
我希望選定的行顏色是行的任何顏色稍暗的陰影。即您仍然可以知道該行的陰影是什麼顏色,但您也可以知道它已被選中。
這樣做的最好方法是什麼?
我使用FormatConditions根據其屬性格式化某些行。例如。我有一個有很多行的網格控件,有一些行在出現錯誤時會着上紅色。我遇到的問題是,當選中一行時,格式會消失並變藍。Devexpress gridcontrol更改選定的行顏色
我希望選定的行顏色是行的任何顏色稍暗的陰影。即您仍然可以知道該行的陰影是什麼顏色,但您也可以知道它已被選中。
這樣做的最好方法是什麼?
我相信你需要手動處理GridView.CustomDrawCell
事件並根據當前行狀態設置行顏色。如果內存正確地爲我服務,則應檢查RowCellCustomDrawEventArgs.Cell
屬性以獲取行狀態信息。
從您的問題中,您只需修改選中該行時的行爲,以便在未選擇該行並且現有功能將保持不變的情況下,您可以簡單地跳過自定義繪製(設置爲e.Handled=False
)。
處理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;
根據您的需求自定義繪製單元格後。
好的,我可以改變單元格的顏色,但是我怎麼能得到我的FormatConditions指定的值?我曾嘗試在e.Appearance.BackColor上使用if條件,但它看起來不像它用顏色格式化單元格。即如果未選中的行被格式化爲正常的紅色,我希望選中的一行是DarkRed。 – user832747 2012-02-23 06:59:19
你仍然可以知道該行的陰影是什麼顏色...關於這個.. e.Cache給你的邊框,背景等筆和畫筆對象,這將幫助你獲得顏色等..你可以得到formatconditions as:'GridView view =(GridView)sender; StyleFormatCondition condition1 = view.FormatConditions [「nameofcondition」];' – 2012-02-23 07:12:46
好了,我可以改變細胞的顏色,但我怎麼能得到我的條件格式指定的值?我曾嘗試在e.Appearance.BackColor上使用if條件,但它看起來不像它用顏色格式化單元格。即如果未選中的行被格式化爲正常的紅色,我希望選中的一行是DarkRed。 – user832747 2012-02-23 07:02:59