2009-07-29 2 views
5

leggevo il MSDN documentation per il metodo System.Windows.Forms.Form.OnClosing() e ho notato:Perché OnClosing obsoleta e devo migrare verso OnFormClosing

ATTENZIONE: Il metodo OnClosing è obsoleto nel .NET Framework versione 2.0; utilizzare invece il metodo OnFormClosing.

posso trovare alcun riferimento da perché era stato contrassegnato come obsoleto.
ho pensato vorrei chiedere qui:

  1. Prima ho sprecato ore drudging attraverso riflettore
  2. Sarebbe utile avere come riferimento per gli altri

L'unica differenza che vedo è che si accedere allo FormClosingEventArgs, quindi se non ne hai bisogno (cosa che ovviamente non hai fatto se stavi usando OnClosing), allora c'è qualche vantaggio nel passare a OnFormClosing?

Capisco che obsoleto significa che potrebbe andare via, quindi è necessario aggiornare il prima possibile, ma entrambi sappiamo che obsoleto in MS terra significa poco. Voglio conoscere solidi dettagli tecnici come perché.

risposta

7

Credo che il motivo principale fosse di aggirare alcune delle incoerenze con OnClosing, in particolare, il fatto che non venga chiamato se il modulo si sta chiudendo a causa di Application.Exit.

Dal documentation:

I metodi OnClosed e OnClosing non sono chiamati quando l'applicazione .. :: metodo di uscita viene chiamato per uscire la vostra applicazione.. Se si dispone di un codice di convalida in uno di questi metodi che devono essere eseguiti, è necessario chiamare singolarmente il metodo Form .. ::. Close per ogni modulo aperto prima di chiamare il metodo Exit.

OnFormClosing fornisce l'accesso al membro CloseReason, che rende la gestione molto più semplice da gestire correttamente, in modo pulito e coerente.

+1

Questo, ed è possibile chiudere un modulo senza chiudere l'applicazione, quindi essere in grado di distinguere tra i due è importante. – Will