Пользовательский столбец DataGridView без постоянных изменений - PullRequest
0 голосов
/ 06 апреля 2011

У меня есть DataGridViewColumn, который использует элемент управления DateTimePicker для редактирования значений ячейки. Он основан на примере, приведенном на MSDN .

Я столкнулся с двумя проблемами, используя этот метод для создания пользовательского столбца: 1. Значение в ячейке возвращается к текущей дате, даже после того, как DateTimePicker был изменен. 2. Редактирование ячейки DateTimePicker в последней строке не приводит к добавлению новой строки (я предполагаю, что это связано с предыдущей проблемой).

Как получить значение, выбранное в DateTimePicker, которое будет присвоено ячейке текстового поля? При необходимости я могу предоставить примеры кода, но мой контроль почти идентичен ссылке MSDN выше.

1 Ответ

0 голосов
/ 06 апреля 2011

Элемент управления, который наследуется от DateTimePicker и реализует IDataGridViewEditingControl, требует переопределения события OnValueChanged (...), чтобы определить, когда был изменен элемент управления для редактирования.Чтобы назначить новое значение, метод должен быть переопределен следующим образом:

protected override void OnValueChanged(EventArgs eventargs)
{
    this.EditingControlValueChanged = true;
    this.EditingControlDataGridView.NotifyCurrentCellDirty(true);
    base.OnValueChanged(eventargs);
}

В качестве дополнительного примечания в классе CalendarEditingControl в примере MSDN, похоже, нет необходимостипеременная valueChanged и переменные rowIndex, так как эти значения могут обрабатываться EditingControlRowIndex и EditingControlValueChanged соответственно (если я правильно прочитал пример).

MSDN Reference

...