2017-01-29 7 views
0

Как изменить цвет фона ячейки в ObjectListView? после запуска события CellEditFinishing? Я смотрю на события args, и я не вижу, как я могу получить доступ к ячейке, чтобы изменить ее фон.Как изменить цвет фона ячейки в ObjectListView?

Да, это звучит как тривиальный вопрос ... но это не то, что можно документировать в документах OLV, форумах, stackoverflow и т. Д. ... даже не один пример:/Пример в демонстрационных примерах просто отменяется событие CellEditFinishing.

ответ

0

Вы не можете сделать это с помощью CellEditFinishing, но вы можете поместить некоторую логику в событие FormatCell, которое может изменить цвет фона в зависимости от содержимого (что, вероятно, вам нужно после редактирования ячейки).

Я использовал его один раз, чтобы указать различные диапазоны значений в разных цветах переднего плана.

Взгляните на пример из официальной документации here. На самом деле, я считаю OLV довольно хорошо документирован;)

private void olv1_FormatCell(object sender, FormatCellEventArgs e) { 
    if (e.ColumnIndex == this.creditBalanceColumn.Index) { 
     Customer customer = (Customer)e.Model; 
     if (customer.Credit < 0) 
      e.SubItem.ForeColor = Color.Red; 
    } 
} 

Обратите внимание, что вы должны установить свойство UseCellFormatEvents истину.

+0

В конце концов я понял это, но это не совсем то, что хотелось. Я хотел донести до конечного пользователя, что они отредактировали текущее поле (независимо от каких-либо условных ограничений на редактируемое базовое значение). Поэтому было бы неплохо сделать это сразу после того, как событие CellEditFinishing было запущено – Selwyn

+0

@Selwyn: вы всегда можете отслеживать эту информацию (если была отредактирована конкретная ячейка) вне OLV (возможно, внутри объекта модели). Установите флаг сотовой ячейки в CellEditFinishing и проверьте его в FormatCell. –