C# - Fókusz kezelése, változásának figyelése

forráskód letöltése
Az a kontrol mely aktuálisan képes adatbevitel fogadására, megkapja és kezeli a billentyűzetről, illetve az egérről származó eseményeket, az birtokolja a fókuszt. A fókuszt mindig csak egy objektum kaphatja meg, ha egy másikat aktivizálunk, akkor az első elveszíti azt. Ennek programból történő előidézését, valamint a fókusz változás bekövetkeztének eseményeit ismerhetjük meg a mellékelt példából.
Mellékelt példában a három TextBox komponens közül mindig annak lesz kék háttérszíne, mely aktuálisan birtokolja a fókuszt. Ennek eléréséhez mind a háromhoz létrehoztunk egy közös Enter és Leave eseménykezelőt. Az Enter esemény akkor jön létre egy objektumnál, ha abba „belépünk”, ekkor a fókuszt is megkapja az adott eszköz. Ebben a pillanatban beállíthatjuk a kék háttérszínt.
      protected void textBox1_Enter (object sender, System.EventArgs e)
      {
        (sender as TextBox).BackColor = Color.Aqua;
      }
A másik esemény, a Leave, mely az Enter ellentéte lesz és akkor jön létre, ha egy objektumból épp „kilépünk”. Ez a kilépés persze csak azért valósul meg mert épp egy másik objektum lett az aktív. Ebben a pillanatban a háttér színt visszaállíthatjuk fehérre.
      protected void textBox1_Leave (object sender, System.EventArgs e)
      {
        (sender as TextBox).BackColor = Color.White;
      }
Persze van lehetőség arra is, hogy programból adjuk át a fókuszt valamely objektumnak. Ehhez a Focus nevű függvényt kell csak meghívnunk. Mivel ez a Control osztályban lett létrehozva, így minden olyan komponens, kontrol tartalmazza, mely ebből származik. Így ha az lenne a feladatunk, hogy a textBox2 komponenst aktiváljuk, akkor ennek a Focus függvényét kell csak meghívnunk.
      protected void button1_Click (object sender, System.EventArgs e)
      {
        textBox2.Focus();        
      }
Szintén a Control osztályban deklarált az alábbi három tulajdonság is:
A Focused logikai típusú property vizsgálatával eldönthetjük egy adott objektumról, hogy az birtokolja-e aktuálisan a fókuszt vagy sem.
Amikor a fókuszt megkapja egy objektum, akkor jön létre a GotFocus esemény, míg ennek ellentétekor a LostFocus eseménnyel figyelhetjük a fókuszt elvesztését.