[C#] Controls per Type suchen

Drucken
( 0 Votes ) 
Hauptkategorie: Programmieren Kategorie: C#
Erstellt am 31.07.2012 Zuletzt aktualisiert am 02.08.2012 Geschrieben von Jonny132
In diesem Tutorial wird eine Funktion beschrieben, welche eine Liste an Controls eines bestimmten Types zurückgibt. Dazu muss die Funktion rekursiv über alle Container-Controls iterieren und dessen Typ auf übereinstimmung abfragen.

Damit das lästige casten wegfällt, wurde die Funktion mittels eines Generischen Typen erstellt (T).

GetControlsByType - Funktion:
        private List<T> GetControlsByType<T>(Control container, Type type)
        {
            List<T> result = new List<T>();
            foreach (Control c in container.Controls)
            {
                if (c.GetType() == type)
                {
                    result.Add((T)Convert.ChangeType(c, typeof(T)));
                }

                if (c.HasChildren)
                {
                    result.AddRange(GetControlsByType<T>(c, type));
                }
            }
            return result;
        }
Als Übergabeparameter erwatet die Funktion das Container-Control welches durchsucht werden soll (Kann auch eine Form sein, da Form von Control erbt) und den Typ nach den gesucht werden soll.

Zurückgegeben wird eine List<T> wobei das 'T' für einen beliebigen Typen steht.
Dabei ist zu beachten, dass die Funktion dennoch streng Typisiert ist.

Aufrufbeispiel:
List<Button> buttons = GetControlsByType<Button>(this, typeof(Button));
In der generischen buttons - List sind nun alle Button - Controls der Form enthalten.

Dieses Tutorial könnte auch für Sie interessant sein:
[C#] Control per Name suchen

     

    Veröffentlichen Sie ihre Kommentare ...