HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Beszúró/felülíró mód egy TextBox kontrolnál


Példaprogram letöltése

7884 bájt

Egy egyszerű trükk segítségével elérhetjük azt, hogy bármely TextBox képes legyen arra, hogy szöveg gépelésekor ne csak beszúró üzemmódban dolgozzon, hanem úgy is, hogy a soron következő karaktert felülírja.

A trükk lényege a következő: ha a TextBox-ban van kijelölt szöveg és a felhasználó lenyom egy billentyűt, akkor a kijelölt szöveg törlésre kerül és annak helyén megjelenik az új karakter. Ha most el tudjuk érni azt, hogy mindig a kurzortól egy karakterrel jobbra lévő karakter legyen kijelölve és az is csak akkor, amikor az új billentyű lenyomása történik, akkor létrejön a kívánt funkció. Mivel a szöveg kijelölés csak akkor történik meg, amikor már le lett nyomva a soron következő billentyű, így a felhasználó észre sem veszi, hogy mi is történt, hanem csak az eredményt látja: felülírás történik a TextBox-ban.
Egészítsük ki még ezt a funkciót azzal, hogy az Insert gomb lenyomásával változtathatunk beszúró és felülíró mód között. Az aktuális mód tárolásárára megkérjük az insertMode nevű változónkat.
    private bool insertMode = true;
Ezek után, ha billentyű lenyomás történik és nincs a felhasználó által kijelölt szöveg a TextBox-ban, valamint a beszúró üzemmód lett kijelölve, akkor nincs más teendőnk, mint a SelectionLength property értékét 1-re állítani. Ezzel azt érjük el, amire szükségünk is van: az aktuális kurzor pozíció mellett egy karakter lesz kijelölve, de mivel a billentyű lenyomás már megtörtént, így ez a kijelölt karakter rögtön törlésre is kerül és annak helyén megjelenik az új.
    private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
    {
      if (textBox1.SelectionLength==0 && insertMode)
      {
        textBox1.SelectionLength=1;
      }
    }
Az Insert gomb figyelését a KeyDown eseménynél valósítjuk meg és itt egyszerűen új értéket adunk az insertMode nevű változónknak.
    private void textBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
    {
      if (e.KeyCode==Keys.Insert)
      {
        insertMode=!insertMode;
      }
    }

Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2002 évkönyv 223. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |