C# - Egér kurzor kezelése programból

forráskód letöltése
Ebben a példában megtudhatjuk, hogy miként kezelhetünk különféle egér kurzorokat programból, melyek egy CUR állományból származnak.
A példában az egér mozgás, lebegés eseményeire is láthatunk alkalmazást.
A Form-on elhelyeztünk egy Panel komponenst, melynek színét is megváltoztattuk a könnyebb láthatóság érdekében. Amikor az egérrel e terület fölé érünk, akkor kikapcsoljuk a kurzor láthatóságát. Ehhez a MouseEnter eseményt kell felhasználnunk, mely pont e pillanatban jön létre. A kurzor kikapcsolását a Cursor osztály Hide függvényének hívásával végezhetjük el.
      protected void panel1_MouseEnter (object sender, System.EventArgs e)
      {       
        System.Drawing.Cursor.Hide();
      }
Amikor az egérrel mozgunk a Panel felett, akkor egy Label-re folyamatosan kiírjuk annak pozícióját. Ehhez a MouseMove eseményre lesz szükségünk, valamint a Cursor osztály Position property-ére, mely egy Point struktúrát ad vissza. Ebből már könnyen meghatározhatjuk a koordinátákat az X és Y property-k segítségével.
      protected void panel1_MouseMove (object sender, System.WinForms.MouseEventArgs e)
      {
        label1.Text = System.Drawing.Cursor.Position.ToString();        
        if (b)
        {
          System.Drawing.Cursor.Hide();
          b = false;
        }        
      }
Amikor egy rövid ideig elidőzünk a Panel komponens felett úgy, hogy az egér nem mozdul, akkor jön létre a MouseHover esemény. Ezt nevezik az egér lebegésének. Itt lesz az a funkció végrehajtva, hogy a betöltött állományból az új kurzort megjelenítjük. Ehhez csak annyit kell tennünk, hogy az eltárolt cr változót értékül adjuk a Cursor osztály Current property-ének, melyben mindig az aktuálisan látható kurzor osztálya kap helyet.
      protected void panel1_MouseHover (object sender, System.EventArgs e)
      {
        if (!b)
        {
          System.Drawing.Cursor.Current = cr;
          System.Drawing.Cursor.Show();
          b = true;
        }
      }
A cr változónak értéket már a program indulásakor adtunk, annak deklarálásánál. Itt egy Cursor osztályt hozunk létre, a konstruktornak pedig paraméterként adjuk át a betöltendő CUR állományt elérési útvonallal együtt.
private Cursor cr = new Cursor(Application.StartupPath+"\\e.cur");
Végül már csak az marad hátra, hogy ha az egérrel elhagyjuk a Panel komponens területét, akkor ismét láthatóvá tegyük a kurzort. Ehhez a Cursor osztály Show függvényét kell meghívnunk.
      protected void panel1_MouseLeave (object sender, System.EventArgs e)
      {
        System.Drawing.Cursor.Show();
      }