Entwickler-Ecke

Basistechnologien - Programmaitsches setzen von CheckBox cheched


reinhard36mueller - Do 11.02.10 18:46
Titel: Programmaitsches setzen von CheckBox cheched
Hallo zusammen.
Bin neu hier, und bestimmt nicht sehr erfahren.
Aber bin mir sicher, einige von Euch können mir helfen.

Habe eine Form.
Darin ist ein TabControl.
In jeden Tab sind versch. Controls.
Ich möchte programmatisch erstmal alle CheckBox´en "checked = false;" setzen.

Bin für jede Antwort dankbar.





C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
{
            // Anzahl Tabs ermitteln
            int iTab = tabControl1.TabCount;


            // Schleifendurchlauf durch die Tabs
            for (int i = 0; i < iTab - 1; i++)
            {
                foreach (Control c in tabControl1.TabPages[i].Controls)
                {
                    // Alle Controls auf Tab durchlaufen
                    if (c.GetType().Name == "CheckBox")
                    {
                        // ???? was muss ich hier machen, damit Checkbox checked auf false gesetzt wird????
                        // c.checked gibt es nicht......
                    }
                }
            }
        }


Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt
Moderiert von user profile iconChristian S.: Topic aus C# - Die Sprache verschoben am Do 11.02.2010 um 17:48


Gabe - Do 11.02.10 19:54

Hallo und herzlich willkommen!

Du musst das vorher erst mal casten, dass du den richtigen Typ hast.

Probier mal

C#-Quelltext
1:
((CheckBox)c).Checked = false;                    


Gruß Gabe


JüTho - Do 11.02.10 20:18

Für die Typprüfung sollte nicht über den Namen gegangen werden; dafür gibt es is:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
                foreach (Control c in tabControl1.TabPages[i].Controls)
                {
                    if (c is CheckBox)
                    {
                        (c as CheckBox).Checked = false;
                    }
                }

Wenn die if-Prüfung erfolgreich ist, geht es auch mit gabes Lösung. Jürgen

PS. Wenn du wirklich mit 3.5 arbeitest, ist Jasons Lösung die mit Abstand beste. Ich musste sie erst heraussuchen, da ich mich noch mit 2.0 befasse.


JasonDelife - Do 11.02.10 20:22

Man könnte auch die Erweiterungsmethode OfType<T>() nutzen:

C#-Quelltext
1:
2:
3:
foreach(CheckBox c in tabControl1.TabPages[i].Controls.OfType<CheckBox>()) {
    c.Checked = false;
}


Grüße, JasonDelife.


reinhard36mueller - Do 11.02.10 20:46

WOW...

Vielen herzlichen Dank.

Griß

Reinhard