Reklama

C# – Tipy, rady, návody – 14: Zpracování události na stisk klávesy

Úvod

Tento příspěvek je zaměřen na zpracování akce po stisknutí klávesy. Použití této události může být celá řada, ale jako příklad použiji formulář, který bude sloužit pro zadání hesla, viz Obr. 1.

Obr. 1: Vzorový formulář

Obr. 1: Vzorový formulář
Popis

Z vytvořeného formuláře lze odvodit, že uživatel zadá do TextBoxu heslo a kontrola hesla a následné akce proběhnou po stisknutí tlačítka “OK”. Uživatelsky je ale velmi žádané, aby kontrola hesla a následné akce proběhly i tehdy, pokud uživatel stiskne klávesu “Enter” po zadání hesla. K zachycení akce po stisku klávesy slouží tři události a to: “KeyDown”, “KeyPress” a “KeyUp”.
 
• KeyDown – Událost je vyvolána při stisknutí klávesy a opakuje se neustále, pokud je klávesa stisknuta.
 
• KeyPress – Událost je vyvolána při stisknutí klávesy. Rozdíl oproti “KeyDown” je v tom, že tato událost není vyvolána stiskem tzv. neznakové klávesy. Takže např. po stisknutí kláves Ctrl, Alt a Shift nedojde k vyvolání události. Zatímco např. po stisknutí kláves Enter, Mezerník nebo Backpace k vyvolání události dojde.
 
• KeyUp – Událost je vyvolaná po uvolnění klávesy.
 
Nyní tedy pro TextBox vybereme událost “KeyDown”, kde zadáme událost “CheckKey”, viz. Obr. 2.

Obr. 2: Nastavení události KeyDown

Obr. 2: Nastavení události KeyDown

V této události musíme napřed zkontrolovat, zda se jedná opravdu o stisk klávesy “Enter” a pokud ano, tak se provede kontrola hesla apod., viz kód níže.

 

001: private void CheckKey(object sender, KeyEventArgs e)
002: {
003: if (e.KeyCode == Keys.Enter)
004: {
005: // zjištění správnosti hesla a následné akce po zadání
006: }
007: }

 

Pokud byste chtěli zamezit tomu, aby docházelo k neustálému testování klávesy a zjišťování správného hesla při držení stisknuté klávesy, tak lze vytvořit datovou složku např. “private bool keyReleased”, která bude ve stavu “true”. Do události “KeyDown” přidáme testování hodnoty keyReleased a po prvním vykonání bude provedena změněna hodnoty na “false”. Nová změna této datové složky opět na “true” bude provedena až v události “KeyUp”.

 
Aktualizace: 24.3.2016
 

Následující a předchozí příspěvek v kategorii:

 
Následující: C# – Tipy, rady, návody – 15: Výběr souboru pomocí OpenFileDialog a SaveFileDialog
Předchozí: C# – Tipy, rady, návody – 13: Zjištění cesty k „.exe“ souboru aplikace
 
Tajned facebook
 

Za případné chyby v textu, ve zdrojovém kódě, nebo ve schématickém zapojení se omlouváme.
AUTOŘI NEBEROU ŽÁDNOU ODPOVĚDNOST ZA PŘÍPADNÉ ÚJMY NA ZDRAVÍ ČI MAJETKU.