[C#] Abfragen ob Anwendung / Form geschlossen werden soll

Drucken
( 2 Votes )
Hauptkategorie: Programmieren Kategorie: C#
Erstellt am 04.04.2012 Zuletzt aktualisiert am 04.04.2012 Geschrieben von Jonny132
In diesem kurzen Tutorial zeige ich euch wie man verhindern kann, dass eine Form geschlossen wird bzw. wie man der User selbst entscheiden kann, ob die Anwendung geschlossen werden soll.
Dafür stellt uns das .NET - Framework das Closing-Event der Form zur Verfügung welches wir abbonieren können. Dieses Event wird immer ausgelöst wenn die Form geschlossen wird. In diesem Event haben wir die Möglichkeit die schließung der Anwendung / Form noch zu verhindern indem wir das Cancel - Flag der mitgelieferten FormClosingEventArgs auf True setzen und somit die Weiterverarbeitung des Events verhindern.

Im Anwendungsfall könnte so eine Abfrage und der Inhalt des Events so aussehen:
    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
      if (MessageBox.Show("Soll die Anwendung wirklich geschlossen werden?" + Environment.NewLine +
        "(Beendungsgrund: " + e.CloseReason.ToString() + ")",
        "Anwendung schliessen", MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.No)
      {
        e.Cancel = true;
      }
    }
Wenn der User sich nun dazu entscheidet, dass die Anwendung nicht geschlossen werden soll, setzen wir das Flag und die Anwendung bleibt bestehen.


  • Lukas123

    schrieb am 2013-03-26 22:37:02

    Wie abonniert man das Event?

    Auf Kommentar antworten

    • Jonny132

      schrieb am 2013-03-27 11:24:53

      Hallo Lukas,

      ein Event kann man entweder über den Designer abbonieren.
      In den Eigenschaften der Form auf die Events-Ansicht wechseln und beim entsprechenden Doppelklicken ODER per Code ala:

      this.FormClosing += new FormClosingEventHandler(Form1_FormClosing);

      sg

      Auf Kommentar antworten

  • Alex

    schrieb am 2013-01-10 21:30:24

    Hey, danke für deine coolen Tuts ;-)

    leider funktioniert es bei mir nicht. Das Fenster Schließt sich trotzdem.

    lg Alex

    Auf Kommentar antworten

    • Jonny132

      schrieb am 2013-01-11 10:41:52

      Hallo Alex,

      der Code funktioniert ohne Probleme. Hast du denn wie im Tutorial erwähnt, das Event auch richtig abboniert?

      Bzw. wird die MessageBox überhaupt angezeigt?

      sg

      Auf Kommentar antworten

Veröffentlichen Sie ihre Kommentare ...