Ho un BindingSource
che sto utilizzando nell'associazione dati winforms e vorrei ricevere una sorta di richiesta quando l'utente tenta di chiudere il modulo dopo aver apportato modifiche ai dati. Una sorta di "Sei sicuro di voler uscire senza salvare le modifiche?"La mia fonte di collegamento può dirmi se si è verificata una modifica?
Sono consapevole che posso farlo tramite l'evento CurrencyManager.ItemChanged
di BindingSource
semplicemente girando un booleano "è stato modificato".
Tuttavia, voglio una funzionalità più robusta. Mi piacerebbe sapere quando i dati attuali sono diversi dai dati originali. L'evento mi dice solo se qualcosa è cambiato. Un utente può ancora modificare una proprietà, premere annulla e penserei ancora che ci sia un cambiamento nei dati da salvare.
Voglio imitare questo simile funzionalità di notepad
- aperto notepad
- tipo qualcosa
- cancellare tutto (essenzialmente disfare quello che hai fatto)
- chiudere il Blocco note, chiude notepad, nessuna richiesta di salva le modifiche perché conosce lo stato finale == lo stato iniziale
Se questo non è possibile le, allora dovrei andare con il gestore di eventi ItemChanged
come descritto sopra o c'è un modo migliore?
Per la cronaca, io sto cercando qualcosa lungo le linee di
bool HasChanged()
{
return this.currentState != this.initialState;
}
non questo
bool HasChanged()
{
// this._hasChanged is set to true via event handlers
return this._hasChanged;
}
avevo appena piuttosto non c'è bisogno di gestire lo stato attuale e lo stato iniziale io stesso, sto cercando un modo per prendere le informazioni dal BindingSource
Se riesco a ottenere questa funzionalità dal BindingSource
il suo modo più ideale dal momento che sarò in grado di utilizzare la funzionalità su molte diverse origini dati, indipendentemente dal tipo, ecc.
+1 Trovo questa domanda molto interessante – Javier