Wie füge ich alle Controlls einer Tabpage zusammenfassen ?
-
Hi Leute
Mal wieder ein kleines Problem.
Also ich hab ne TabControl mit 2 Tabpages.
Aus jeder der zwei Pages sind natürlich Schaltflächen, Buttons und Textfelder.
Diese sind alle in "Groupboxen" enthalten//
// tabPage1
//
this.tabPage1.Controls.Add(this.groupBox2);
this.tabPage1.Controls.Add(this.groupBox1);
resources.ApplyResources(this.tabPage1, "tabPage1");
this.tabPage1.Name = "tabPage1";
this.tabPage1.UseVisualStyleBackColor = true;
//
// groupBox2
//
this.groupBox2.Controls.Add(this.groupBox5);
this.groupBox2.Controls.Add(this.checkBox11);
this.groupBox2.Controls.Add(this.checkBox10);
this.groupBox2.Controls.Add(this.checkBox9);
this.groupBox2.Controls.Add(this.checkBox8);
resources.ApplyResources(this.groupBox2, "groupBox2");
this.groupBox2.Name = "groupBox2";
this.groupBox2.TabStop = false;Wie kann man die denn so Ansprechen, das man erst den Namen der Tappage und dann eine Auswahl ALLER in der Page enthaltenen Controls hat ?
Ich hab gelesen das es eine ControllCollection gibt ... wie löst mans ?
MFG
Marco
-
Schau Dir die zwei Zeilen mal ganz genau an:
this.tabPage1.Controls.Add(this.groupBox2); this.tabPage1.Controls.Add(this.groupBox1);
-
Vom Prinzip her glaube ich zu ahnen ...
Aber egal was ich auch versuche ... es paßt nicht, z.B:
ControlCollection test = new ControlCollection(this.tabPage1);
Ich dachte jetzt, das ich unter "test" nun die ganzen Controll der tabpage1 erreichen würde, aber das ist leider nicht.
MFG
Marco
-
Und hier die Auflösung des (schwierigen) Rätsels: -)
ControlCollection controls = tabpage1.Controls;
-
Er will aber die Button Labels u.s.w und nicht nur die Groupboxes in der Tabpage.
Diese Funktion sollte dir alle Controls die innerhalb eines anderen Controls sind liefern.public Dictionary<string,Control> GetAllControls(Control parent) { Dictionary<string,Control> r = new Dictionary<string,Control>(); foreach (Control child in parent.Controls) { r.Add(child.Name,child); Dictionary<string,Control> r_child = GetAllControls(child); foreach(KeyValuePair<string,Control> grandchild in r_child) { r.Add(grandchild.Key,grandchild.Value); } } return r; }
-
Na wein wenig Hirnschmalz darf der Op schon selbst investieren. Ansonsten sollte die Routine wenn schon einen kompatiblen Typen generieren und kein Dictionary auswerfen.
-
Ich habe nur die Funktion aus meine Programm kopiert und in den arbeite ich eben mit einen Dictionary.