Wie kann das Schließen und Entsorgen einer Winform im FormClosing-Ereignis verhindert werden?

Diese Frage scheint wie ein Duplikat zu sein, aber ich bin gerade auf dieses Problem gestoßen, als ich mein Programm getestet habe, und ich bin irgendwie verwirrt, wie Sie es lösen.

Ich habe eine Winform und es gibt eine Formschlussveranstaltung. In diesem Fall öffne ich ein Nachrichtenfenster und frage den Benutzer: "Möchten Sie das Fenster wirklich schließen?". Wenn sie die Ja-Taste gedrückt haben, schließt die Anwendung das Fenster und verhindert, dass es wie erwartet entsorgt wird. Also kann ich es wieder öffnen. Wenn sie jedoch keine Taste gedrückt haben, wird das Fenster immer noch geschlossen, aber jetzt ist das Fenster entsorgt. Wenn ich versuche, es erneut zu öffnen, wird die Ausnahme "Kein Zugriff auf ein entsorgtes Objekt möglich" ausgelöst. Wenn kein Knopf gedrückt wird, möchte ich, dass die Winform geöffnet und nicht entsorgt wird.

Hier ist mein Code:

method PPMain.PPMain_FormClosing(sender: System.Object; e: System.Windows.Forms.FormClosingEventArgs);
begin
       if MessageBox.Show('Are you sure you want to close the window?','PPMain',MessageBoxButtons.YesNo) = DialogResult.Yes then
       begin
             e.Cancel := true; 
             Hide; 
       end
       else
             e.Cancel := false;
end;

Ich dachte, da Sie e.Cancel = true setzen müssen, um das Fenster zu schließen und es auszublenden. Wenn Sie das Gegenteil tun (e.Cancel = false und kein Verstecken), wird die Winform nicht geschlossen und entsorgt.

Wie löst du das?

Danke im Voraus,

Antworten auf die Frage(1)

Ihre Antwort auf die Frage