#datagridview #editor #cell
Вопрос:
Я реализовал пользовательский редактор ячеек для своего представления DataGrid для одного столбца, который можно редактировать. Однако я заметил, что при первом редактировании любой ячейки значение не копируется в элемент, связанный с данными. Так что, похоже, ничего не случилось. Тем не менее, все работает хорошо после этой первоначальной попытки-напишите.
Вот пример. Поэтому я просто запустил программу и поместил «2» в колонку проблем.
Но когда я покидаю ячейку, значение теряется:
Но если я вернусь и запишу данные обратно, они прилипнут:
Не имеет значения, какая ячейка редактируется первой, в первый раз она не будет работать ни с одной ячейкой. После первого раза любая ячейка будет работать.
Однако, если я помещу разрыв в пользовательский редактор, который будет поражен при чтении данных, как в GetEditingControlFormattedValue(), то это сработает.
Видя это, я попытался протестировать полностью скомпилированную версию программы, но проблема все равно возникает.
Я вызываю DataGridView.NotifyCurrentCellDirty() для события onLeave пользовательского редактора:
protected override void OnLeave(EventArgs e)
{
base.OnLeave(e);
this.EditingControlDataGridView.NotifyCurrentCellDirty(this.EditingControlValueChanged);
}
Может быть, в этом и проблема, но я не знаю, куда еще позвонить NotifyCurrentCellDirty().