Tengo un BindingSource
que estoy utilizando en el enlace de datos de winforms y me gustaría tener algún tipo de aviso para cuando el usuario intente cerrar el formulario después de que hayan realizado cambios en los datos. Una especie de "¿Estás seguro de que quieres salir sin guardar los cambios?"¿Puede mi fuente de enlace decirme si ha ocurrido un cambio?
Soy consciente de que puedo hacer esto a través del evento BindingSource
CurrencyManager.ItemChanged
simplemente volteando un booleano "ha cambiado".
Sin embargo, quiero una funcionalidad más robusta. Me gustaría saber cuándo los datos actuales son diferentes a los datos originales. El evento simplemente me dice si algo ha cambiado. Un usuario aún podría cambiar una propiedad, presionar Deshacer, y aún pensaría que hay un cambio en los datos para guardar.
Quiero imitar esta funcionalidad similar de libreta
- libreta abierta
- tipo algo
- eliminar todo (esencialmente deshacer lo que hizo)
- cerca de bloc de notas, cierra el bloc de notas, sin preguntar a guardar cambios porque conoce el estado final == el estado inicial
Si esto no es posible Entonces, ¿debería ir con el controlador de eventos ItemChanged
como se describe anteriormente o hay una forma mejor?
Para el registro, estoy buscando algo en la línea de
bool HasChanged()
{
return this.currentState != this.initialState;
}
no esta
bool HasChanged()
{
// this._hasChanged is set to true via event handlers
return this._hasChanged;
}
que acababa en lugar no tiene que administrar el estado actual y el estado inicial yo mismo, estoy buscando una manera de obtener esa información del BindingSource
Si puedo obtener esta funcionalidad del BindingSource
es mucho más ideal, ya que podré usar la funcionalidad en muchas fuentes de datos diferentes, sin importar el tipo, etc.
+1 Me parece muy interesante la pregunta – Javier