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



BeitragVerfasst: Do 11.02.10 18:46 
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.




ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 39



BeitragVerfasst: 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
ausblenden C#-Quelltext
1:
((CheckBox)c).Checked = false;					


Gruß Gabe
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: Do 11.02.10 20:18 
Für die Typprüfung sollte nicht über den Namen gegangen werden; dafür gibt es is:
ausblenden 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.


Zuletzt bearbeitet von JüTho am Do 11.02.10 20:28, insgesamt 1-mal bearbeitet
JasonDelife
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 81

Windows 7 Professional
C# (Visual Studio 2008 Professional), Java (NetBeans IDE 6.7)
BeitragVerfasst: Do 11.02.10 20:22 
Man könnte auch die Erweiterungsmethode OfType<T>() nutzen:
ausblenden C#-Quelltext
1:
2:
3:
foreach(CheckBox c in tabControl1.TabPages[i].Controls.OfType<CheckBox>()) {
    c.Checked = false;
}


Grüße, JasonDelife.
reinhard36mueller Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Do 11.02.10 20:46 
WOW...

Vielen herzlichen Dank.

Griß

Reinhard