Sie schließen den Dialog auf eine ungewöhnliche Art und Weise, indem Sie die DialogResult-Eigenschaft des Formulars festlegen. Winforms synthetisiert immer noch das FormClosed-Ereignis in diesem Fall, tut es aber zur "falschen" Zeit, das Fenster ist immer noch sichtbar. Es wird unmittelbar danach unsichtbar.
Wenn Sie eine Problemumgehung für diese dann benötigen, ist der Trick zu verzögern, was Sie in Ihrem FormClosed-Ereignishandler tun möchten. Das ist elegant getan, indem die Control.BeginInvoke() Methode verwendet wird, wie folgt aus:
_form2.FormClosed += (s, a) => {
this.BeginInvoke(new Action(() => MessageBox.Show("TEXT")));
};
Und Sie werden jetzt die MessageBox nach das Fenster verschwunden sehen.
Vorsicht vor dem Fehler in Ihrem Code, Sie abonnieren das FormClosed-Ereignis mehr als einmal.
Das funktioniert nur auf einem zweiten Formular. Wenn es das Hauptformular ist, das von 'Program' durch' Application.Run (neues Form1()) aufgerufen wird; '- wird die MessageBox nicht angezeigt. [Meine Frage zu diesem Thema] (http://stackoverflow.com/questions/28397177/how-to-execute-code-after-the-main-form-hasclosed). – ispiro
+1. Ich nahm an, dass ich etwas verpasse. Warum würde ein Formular ** Geschlossen ** nicht ausgelöst, nachdem das Formular geschlossen wurde. Durch deinen Kommentar habe ich verstanden, dass es so ist. Vielen Dank. – ispiro