Si sta chiudendo la finestra di dialogo in un modo insolito, il modo normale è impostando la proprietà DialogResult del modulo. Winforms sintetizza ancora l'evento FormClosed in questo caso ma lo fa nel momento "sbagliato", la finestra è ancora visibile. Sarà invisibile subito dopo.
Se è necessario un rimedio per questo, è possibile, ritardare ciò che si vuole fare nel gestore di eventi FormClosed. Questo è elegantemente fatto usando il metodo Control.BeginInvoke(), in questo modo:
_form2.FormClosed += (s, a) => {
this.BeginInvoke(new Action(() => MessageBox.Show("TEXT")));
};
E Vedrai MessageBox dopo finestra scomparve.
Attenzione al bug nel codice, si sottoscrive l'evento FormClosed più di una volta.
fonte
2013-12-17 13:27:11
Che funziona solo su un secondo Modulo. Se è il form principale chiamato da 'Program' di' Application.Run (new Form1()); '- il MessageBox non verrà mostrato. [La mia domanda in merito] (http://stackoverflow.com/questions/28397177/how-to-execute-code-after-the-main-form-has-closed). – ispiro
+1. Ho pensato che mi mancasse qualcosa. Perché un evento Form ** Closed ** non viene attivato _after_ il modulo è chiuso. Con il tuo commento, ho capito che è proprio così. Grazie. – ispiro