У меня есть BindingSource
, который я использую в привязке данных winforms, и я хотел бы получить подсказку о том, когда пользователь пытается закрыть форму после внесения изменений в данные. "Вы уверены, что хотите выйти без сохранения изменений?"
Я знаю, что могу сделать это через событие BindingSource
CurrencyManager.ItemChanged
, просто щелкнув "изменил" логическое значение.
Однако я хочу более надежную функциональность. Я хотел бы знать, когда текущие данные отличаются от исходных данных. Событие просто говорит мне, изменилось ли что-то. Пользователь все равно может изменить свойство, отменить отмену, и я все равно думаю, что есть изменения в данных для сохранения.
Я хочу подражать подобным функциям блокнота
- открыть блокнот
- введите что-то
- удалить все (по сути, отменить то, что вы сделали)
- закрыть блокнот, блокнот закрывается, нет подсказки для сохранения изменений, поскольку он знает конечное состояние == начальное состояние
Если это невозможно, следует ли мне пойти с обработчиком событий ItemChanged
, как описано выше, или есть лучший способ?
Для записи я ищу что-то в строках
bool HasChanged()
{
return this.currentState != this.initialState;
}
не этот
bool HasChanged()
{
// this._hasChanged is set to true via event handlers
return this._hasChanged;
}
Мне просто не нужно было управлять текущим состоянием и начальным состоянием, я ищу способ захватить эту информацию из BindingSource
. Если я смогу получить эту функциональность от BindingSource
ее пути более идеален, так как я смогу использовать функциональность во многих разных источниках данных, независимо от типа и т.д.