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.


Anmelden zum Antworten