Как определить, изменил ли пользователь данные с помощью bindingsource? - PullRequest
8 голосов
/ 05 февраля 2010

У меня есть DataGridView, связанный с источником привязки, который связан с List<T>. Пользователь щелкает строку, которая переходит в форму с текстовыми полями и т. Д. Текстовые поля связаны с данными следующим образом:

if (txtID.DataBindings.Count == 0)
    txtID.DataBindings.Add("Text", bindingSource, "Title");

Я хочу иметь возможность определять, изменил ли пользователь какие-либо данные в элементах управления, когда они нажимают кнопку закрытия, поэтому я могу предложить им сказать «У вас есть несохраненная работа. 1005 *

Как мне обнаружить это в источнике привязки?

ОБНОВЛЕНИЕ: Я выяснил, что я могу сделать bindingSource.EndEdit(), который вносит изменения в мой элемент в списке. В моем элементе я могу сказать, что Dirty выбрасывает окно сообщений, но если они нажимают «Нет» для сохранения информации, CancelEdit не работает.

Ответы [ 11 ]

0 голосов
/ 12 февраля 2010

Из моего обновленного вопроса я обнаружил, что должен был сохранить текущую версию объекта в BeginEdit, используя Memberwise.Clone, а затем в CancelEdit я восстановил текущую.

...