Я работаю над пониманием фреймворка в C #. У меня есть форма с простыми кнопками добавления / редактирования, сохранения / отмены (и выхода) на форме. Форма имеет сетку и привязанную к ней таблицу данных (таблица данных - это поле формы для целей области действия, которое остается на время действия формы).
Также в форме есть 3 простых элемента управления текстовым полем, привязанных к соответствующим столбцам в DataTable
. Когда я прокручиваю сетку, детали текстового поля автоматически обновляются ... идеально.
У меня нормально работает добавление / отмена координации, но не удается изменить / отменить. Сбой в отношении следующего.
Я запускаю форму, сетка отображает 3 строки (столбец 1 - это простое «Описание»). Первая строка имеет значение Test
(поэтому в соответствующей форме отображается соответствующий связанный элемент управления текстового поля). Я нажимаю кнопку редактирования и теперь могу изменить отдельное текстовое поле (не сетку данных) и изменить его на Test changed value
.
Итак, теперь я нажимаю кнопку «Отмена» и надеюсь на следующее ... Сетка НЕ обновляется с новым значением, а отдельный элемент управления textbox возвращается к своему исходному значению Test
.
В кнопке Отмена я выдаю MyDataTable.RejectChanges()
, и сетка правильно сохраняет исходное значение Test
, но элемент управления textbox сохраняет содержимое Test changed value
. Когда у меня тот же самый вызов RejectChanges()
во время комбинации добавления / отмены, все это прекрасно работает.
Чтобы смоделировать подобное во время добавления / отмены, я явно навязываю сетку последней допустимой строке таблицы данных, которая, в свою очередь, обновляет текстовые поля ... Очевидно, что-то в процессе вызова / перезагрузки MyDataGridView.CurrentRow
срабатывание вызывает то, чего я не вижу. Поскольку это РЕДАКТИРОВАТЬ, я не удаляю строку из таблицы (временно из «Добавить»), а затем отклоняю (что удаляет), и форсирует изменение строки через MyDataGridView.CurrentCell = [0, LastDataRowInDataTable]
.
Любые мысли были бы великолепны.