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