Как обрабатывать редактирование пользовательских типов в представлении данных C#?

У меня есть datagridview, в котором один столбец содержит пользовательский класс, который я установил, используя:

dgvPeriods.Columns[1].ValueType = typeof(ExDateTime);

Он настроен для правильного отображения путем обработки события CellFormatting, но я не уверен, какое событие обрабатывать для редактирования ячейки. В отсутствие каких-либо действий я получаю FormatException, поскольку представление данных пытается преобразовать строку в ExDateTime, когда я пытаюсь переместить фокус из редактируемой ячейки. Я попытался добавить преобразование типов в свой пользовательский класс ExDateTime:

public static implicit operator ExDateTime(string b)
{
    return new ExDateTime(b);
} 

Но это не сработало. Я также пытался обработать событие DataError, но, похоже, оно срабатывает слишком поздно. Datagridview не привязан к данным.


person Ian Hopkinson    schedule 20.03.2010    source источник


Ответы (2)


Оказывается, мне нужно обработать событие CellParsing:

e.Value = new ExDateTime(e.Value.ToString());
e.ParsingApplied = true;
person Ian Hopkinson    schedule 20.03.2010

попробуйте обработать событие сетки CellValidating

person devnull    schedule 20.03.2010