Autor Beitrag
Fakiz
Hält's aus hier
Beiträge: 12

Win Vista
Visual C# 2010, Visual Basic 2010
BeitragVerfasst: Mo 19.03.12 22:47 
Guten Abend,

ich habe momentan folgendes Problem, ich versuche alle Checkboxen auf meiner Form durchlaufen zu laßen und ggf. die Checkbox unchecken. So wie es aussieht werden allerdings alle Controls auf der Form durchlaufen. Ich hoffe jemand kann mir auf die Sprünge helfen wo ich den Fehler suchen muß.


ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
foreach (CheckBox cBox in Controls)
{
    if (cBox is CheckBox)
    {
        cBox.Checked = false;
    }
}


Ok habs jetzt hin bekommen richtig wäre es so:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
CheckBox c = default(CheckBox);

foreach (Control con in this.Controls)
{
    if (con is CheckBox)
    {
        c = (CheckBox)con;
        if (c.Checked)
        {
            c.Checked = false;
        }
    }
}


Moderiert von user profile iconTh69: Codeformatierung überarbeitet.
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Di 20.03.12 11:01 
Hallo Fakiz,

sofern du mindestens C# 3.5 benutzt, kannst du auch kürzer
ausblenden C#-Quelltext
1:
2:
3:
4:
foreach (CheckBox checkBox in Controls.OfType<CheckBox>())
{

}

benutzen.

Alternativ zu deiner Lösung kannst du auch den as-Operator benutzen (da dann nur einmal gecastet werden muß):
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
foreach (Control control in this.Controls)
{
    CheckBox checkBox = control as CheckBox;
    if (checkBox != null)
    {
       checkBox.Checked = false;
    }
}


P.S. Und gewöhne dir am besten gleich an passende Variablennamen zu wählen (anstatt Abkürzungen), da dann der Code leichter zu lesen (und zu verstehen) ist.