Angenommen, Sie fragen nach WinForms, können Sie das Ereignis FormClosing () verwenden . Das Ereignis FormClosing () wird jedes Mal ausgelöst, wenn ein Formular geschlossen werden soll.
Um festzustellen, ob der Benutzer entweder auf X oder auf Ihren CloseButton geklickt hat, können Sie ihn über das Absenderobjekt abrufen. Versuchen Sie, den Absender als Button-Steuerelement zu verwenden, und überprüfen Sie beispielsweise den Namen "CloseButton".
private void Form1_FormClosing(object sender, FormClosingEventArgs e) {
if (string.Equals((sender as Button).Name, @"CloseButton"))
// Do something proper to CloseButton.
else
// Then assume that X has been clicked and act accordingly.
}
Andernfalls musste ich nie unterscheiden, ob auf X oder CloseButton geklickt wurde, da ich für das FormClosing-Ereignis etwas Bestimmtes ausführen wollte, z. B. das Schließen aller MdiChildren vor dem Schließen des MDIContainerForm oder das Überprüfen von Ereignissen auf nicht gespeicherte Änderungen. Unter diesen Umständen müssen wir meiner Meinung nach nicht von beiden Tasten unterscheiden.
Das Schließen mit ALT+ F4löst auch das Ereignis FormClosing () aus, da eine Nachricht an das Formular gesendet wird, die besagt, dass das Formular geschlossen werden soll. Sie können das Ereignis abbrechen, indem Sie die Einstellung
FormClosingEventArgs.Cancel = true.
In unserem Beispiel würde dies übersetzt werden
e.Cancel = true.
Beachten Sie den Unterschied zwischen den Ereignissen FormClosing () und FormClosed () .
FormClosing tritt auf, wenn das Formular die zu schließende Nachricht empfangen hat und überprüft, ob es etwas zu tun hat, bevor es geschlossen wird.
FormClosed tritt auf, wenn das Formular tatsächlich geschlossen wird, also nachdem es geschlossen wurde.
Hilft das?