ClosingEvent

Z

Zaubermaus84

Huhu,

ich habe eine Program welches, wenn es vom Nutzer beendet wird, prüft ob Änderungen vorgenommen wurden und nicht gespeichert wurde. Wenn dem so ist soll ein Fensterchen erscheinen welches nachfragt ob noch gespeichert werden soll.
Mögliche Buttons wären dann:

Ja (dann wird gespeichert und das Programm beendet)
Nein (dann wird einfach beendet)
Abbrechen (es wird nicht gespeichert und das ClosingEvent abgebrochen)

Mein Problem ist jetzt das wenn ich im ClosingEvent eine neue Form aufmache (eben diese die nachfrägt) sich das Programm dennoch sofort beendet, weil es eben nur die neue Form anzeigt, dann aber nicht wartet. Das Programm müsste an dieser Stelle aber warten bis der Nutzer auf dem 2ten Form etwas gedrückt hat, die Aktion ausgeführt wurde und sich dann beenden.

Geht sowas nur mit Threads oder gibt es da auch andere Möglichkeiten ?
 
Hallo,

ich würde dir eine einfache MessageBox für dein Problem empfehlen.
Die öffnet sich auch Modal, so das das Programm wartet welches Ergebnis sie liefert.

C#:
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            DialogResult res = MessageBox.Show("Daten speichern vor dem Beenden?", "Speichern?", MessageBoxButtons.YesNoCancel);
            if (res == DialogResult.Cancel)
            {
                // Abbrechen (es wird nicht gespeichert und das ClosingEvent abgebrochen)
                e.Cancel = true;
            }
            else if (res == DialogResult.Yes)
            {
                // Ja (dann wird gespeichert und das Programm beendet)
            }
            else if (res == DialogResult.No)
            {
                // Nein (dann wird einfach beendet)
            }
        }

Du kannst deine 2. Form auch als Dialog anzeigen lassen, so dass das Hauptfenster auch gesperrt bleibt.
C#:
form2.ShowDialog();
 
Zuletzt bearbeitet:
Ah supi, danke, ich wusste nicht das man Messageboxen auch Buttons zufügen kann, werd die Möglichkeiten gleich mal versuchen.
 

Neue Beiträge

Zurück