2012-02-16 4 views
3

Я использую FormatConditions для форматирования определенных строк на основе их свойств. Например. У меня есть gridcontrol со многими строками, а некоторые строки окрашены в красный цвет, когда есть ошибка. Проблема заключается в том, что при выборе строки форматирование исчезает и становится синим.Изменение размера сетки девекспресса выбранного цвета строки

Я хотел бы, чтобы выбранный цвет строки был немного темнее, чем бы ни был цвет этой строки. То есть Вы все же можете указать, какой цвет был затенен, но вы также можете сказать, что он выбран.

Каков наилучший способ для этого?

ответ

1

Я считаю, что вам нужно будет сделать это вручную, обработав событие GridView.CustomDrawCell и установите цвет строки на основе текущего состояния строки. Если память служит мне правильно, вы должны проверить свойство RowCellCustomDrawEventArgs.Cell для информации о состоянии строки.

Из вашего вопроса вам нужно только изменить поведение при выборе строки, чтобы вы могли просто пропустить пользовательский чертеж (установить e.Handled=False), если строка не выбрана, и существующая функциональность не изменится.

+0

Хорошо, так что я могу изменить цвет клеток, но как я могу получить значение, указанное моим FormatConditions? Я попытался использовать условие if на e.Appearance.BackColor, но не похоже, что он отформатировал ячейку с цветом. То есть Я хочу, чтобы выбранная строка была DarkRed, если не выбранная строка отформатирована как нормальная красная. – user832747

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; после пользовательской покраски ячейки согласно вашему требованию.

Go Через эти ссылки на документацию:
Custom Painting Basics
Custom Painting Samples

+0

Итак, я могу изменить цвет ячеек, но как я могу получить значение, указанное в моих FormatConditions? Я попытался использовать условие if на e.Appearance.BackColor, но не похоже, что он отформатировал ячейку с цветом. То есть Я хочу, чтобы выбранная строка была DarkRed, если не выбранная строка отформатирована как нормальная красная. – user832747

+0

Вы все еще можете указать, какой цвет был затенен для строки ... относительно этого .. 'e.Cache' дает вам границу, фон и т. Д. Перо и объект кисти, которые помогут вам получить цвет и т. Д. Вы можете получить formatconditions как: 'GridView view = (GridView) отправитель; StyleFormatCondition condition1 = view.FormatConditions ["nameofcondition"]; ' –

Смежные вопросы