I have a BindingSource
that I'm using in winforms data binding and I'd like to have some sort of prompt for when the user attempts to close the form after they've made changes to the data. A sort of "Are you sure you want to exit without saving changes?"
I'm aware that I can do this via the BindingSource
's CurrencyManager.ItemChanged
event by just flipping a "has changed" boolean.
However, I want a more robust functionality. I'd like to know when the current data is different from the original data. The event just tells me if somethings changed. A user could still change a property, hit undo, and I would still think that there is a change in the data to save.
I want to mimic this similar functionality of notepad
- open notepad
- type something
- delete everything (essentially undoing what you did)
- close notepad, notepad closes, no prompt to save changes because it knows the end state == the initial state
If this is not possible, then should I go with the ItemChanged
event handler as outlined above or is there a better way?
For the record, I'm looking for something along the lines of
bool HasChanged()
{
return this.currentState != this.initialState;
}
not this
bool HasChanged()
{
// this._hasChanged is set to true via event handlers
return this._hasChanged;
}
I'd just rather not have to manage the current state and the initial state myself, I'm looking for a way to grab that info from the BindingSource
If I can get this functionality from the BindingSource
its way more ideal since I will be able to use the functionality on many different data sources, regardless of type, etc.