FormClosing Event Frage Visual C#.Net

Newcomer1

Mitglied
Hallo liebes Forum,

Seit kurzem beschäftige ich mich erst mit Visual C#.Net und komme eigentlich durch diverse Suchfunktionen gut zurecht. Es gibt ja im Netz zu Hauf Einträge und Tutorials dazu.
Jedoch bin ich auf eine Herausforderung gestossen, welche ich nicht im Stande bin zu lösen.

Es geht um das "FormClosing" Event:

Ich habe da einen kleinen Texteditor geschrieben (was sonst als Newbie ;)) und möchte über das FormClosing Event eine Abfrage zur Speicherung der Datei hinzufügen.
Da wurde ich auf der MSDN Datenbank fündig. Soweit sogut: funktioniert wenn man denn speichert, die Form wird dann geschlossen.
Wenn man nun aber auf "Nein" klickt, kommt die MessageBox ein paar mal wieder, wie in einer Art "Schleife".
Was mache ich falsch?

Hier ein Blick auf den Code:

Code:
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            // Wenn die Textbox NICHT leer ist
            if (richTextBox1.Text != "")
            {
                // MessageBox anzeigen
                if (MessageBox.Show("Wollen Sie das Dokument speichern?", "Ich lerne erst ;-)",
                   MessageBoxButtons.YesNo) == DialogResult.Yes)
                {
                    //Braucht man ja nur wenn Form anschließend offen bleiben soll, oder?
                    //e.Cancel = true;

                    Speichern(); //saveDialog Ist global angelegt, da ich ihn desöfteren benötige
                   
                }
                else
                {
                    Application.Exit();
                }
            }
        }


Vielleicht kann mir jemand einen Tip geben?

Danke schon mal im voraus!!
 

Hale

Mitglied
Hallo Newcomer1,

die Sache ist die, dass du bei deiner Zeile

Code:
Application.Exit();

wieder dein FormClosing()-Event aufrufst, weil die Form ja nunmal wieder geschlossen wird.
Deswegen hängst du in einer Dauerschleife fest.

Es gibt 2 Möglichkeiten wie du dein Problem beheben kannst.

1.:
Du lässt den else Block weg, da es unnötig ist nochmal die Form zu schließen, weil sie ja gerade im Begriff ist sich zu schließen oder

2.:
Du schreibst deine Logik in das FormClosed-Event.

Ich habe beide Varianten bei mir getest und sie funktionierten ohne Probleme, falls du noch Fragen hast kannst du dich gerne an mich wenden.

Liebe Grüße
Hale