Autor Beitrag
SabineH
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mi 06.06.07 07:30 
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.

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Mi 06.06.07 09: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:
ausblenden 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
SabineH Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mi 06.06.07 09:49 
Hallo Jürgen,

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


Schöne Woche noch und vielleicht bis bald

Gruß
Sabine