C# - Form-on lévő kontrollok elérése egyetlen tömbből

forráskód letöltése
Egy Form-on számtalan kontroll lehet. Képzeljük el azt az esetet, mikor valamilyen okból az összes TextBox-ot le kell tiltani, vagyis az Enabled property-jén hamis értéket adni. Ekkor, ha sok TextBox van a Form-on, akkor elég fárasztó munka ezeket egyesével átállítani. Szerencsére van ennél egyszerűbb megoldás is, melynek az a további előnye, hogy még csak azt sem kell tudnunk, hogy aktuálisan hány TextBox van a Form-ra feltéve, hiszen ez a fejlesztés folyamán állandóan változhat.
Megoldást a Form-unk Controls property-je adja. Ennek van egy Item property-je, mely tartalmazza egyetlen tömbben az összes Form-on található kontrollt. Ezt felhasználva nincs más teendőnk, mint írni egy ciklust, amely végigmegy e tömb minden elemén.
    private void button1_Click(object sender, System.EventArgs e)
    {
      for (int i=0; i<this.Controls.Count-1; i++)
      {
A Form-on persze tetszőleges objektumok lehetnek, a feladatunk pedig csak a TextBox típusú kontrollok letiltása. Ehhez egy feltétellel vizsgálnunk kell, hogy az Item property aktuális eleme vajon mi is. Ezt úgy végezzük el, hogy a GetType-al lekérdezzük a típusát, majd a Name property felhasználásával vizsgáljuk, hogy a típusának megnevezése egyezik-e a TextBox szöveggel. Ha igen, akkor találtunk egy TextBox-ot.
        if (this.Controls[i].GetType().Name == "TextBox")
        {
Ebben az esetben már bármit megtehetünk a megtalált objektummal, amire csak szükségünk van a munkánk során.
          this.Controls[i].Enabled = false;
          (this.Controls[i] as TextBox).BackColor = SystemColors.Control;
        }          
      }
    }