Entwickler-Ecke

WinForms - zweite Form schließt sich nicht


SabineH - Mi 06.06.07 06:30
Titel: zweite Form schließt sich nicht
Hi,

kann mir mal jemand verraten warum sich meine zweite Form zwar öffnen aber nicht schließen lässt. Die checkBox1 befindet sich auf meiner Form1.


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
privat void checkBox1_CheckedChanged(object sender, EventArgs e)
{
   Form2 F2 = new Form2();

   If(checkBox1.Checked == true)
   {
      F2.Show();
   }
   else
   {
      F2.Close();
   }
}

Gebt bitte mal eine Antwort,
Danke
Sabine

Moderiert von user profile iconUGrohne: Beitragsformatierung überarbeitet.


JüTho - Mi 06.06.07 08:14

Hallo Sabine,

innerhalb Deiner Ereignismethode wird immer zuerst F2 erzeugt. Beim ersten CheckedChanged mit (Checked) wird F2 erzeugt und angezeigt. Beim zweiten CheckedChanged mit (!Checked) wird ein weiteres F2 (!) erzeugt und sofort wieder geschlossen; das erste F2 bleibt offen.

Zur Lösung musst Du F2 aus der Ereignisbehandlung herausnehmen und Dich nur auf das Erzeugen/Öffnen/Schließen beschränken. Außerdem brauchst Du Sicherheitsabfragen:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
private Form2 F2;
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
    if(checkBox1.Checked)
    {
        F2 = new Form2();
        F2.Show();
    } else {
        F2.Close();
    }
}

Gruß Jürgen

PS. Bitte Code markieren, das liest sich besser; dazu "Bereiche" aktivieren.
PS. if (checked == true) ist doppelt gemoppelt und kann auch zu Fehlinterpretationen führen, siehe [Tipp] Anfängerfehler == true / == false [http://www.mycsharp.de/wbb2/thread.php?threadid=17536]


SabineH - Mi 06.06.07 08:49

Hallo Jürgen,

vielen Dank für Deine Antwort. Jetzt funktioniert es.


Schöne Woche noch und vielleicht bis bald

Gruß
Sabine