In questo articolo vedremo come utilizzare alcuni eventi riguardanti i tasti della tastiera per ottenere informazioni su quando si preme un tasto e a quale tasto corrisponde.
Esistono 4 differenti eventi
- KeyDown
- KeyPressed
- KeyUp
- PreviewKeyDown
I primi 3 vengono generati quando si preme un tasto mentre il controllo dispone dello stato attivo.
PreviewKeyDown si verifica prima che scatti l'evento KeyDown , quando viene premuto un tasto mentre è attivo il controllo.
Gli eventi relativi alla pressione dei tasti si verificano nel
seguente ordine: KeyDown, KeyPressed, KeyUp.
Per capire quale tasto viene premuto è possibile utilizzare
e.KeyCode, e.KeyValue e e.KeyData che funzionano per
PreviewKeyDown, KeyDown e KeyUp ma non per
KeyPressed . Vediamo un esempio:
private void Form1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
switch (e.KeyCode)
{
case Keys.F:
{
// Premuto il tasto F
break;
}
case Keys.D:
{
// Premuto il tasto D
break;
}
}
}
E' anche possibile capire se vengono premuti
i tasti [SHIFT], [ALT], e [CTRL] attraverso e.Shift, e.Control ed e.Alt . Questo lo si può fare solo
all'interno degli eventi PreviewKeyDown, KeyDown e KeyUp .
private void Form1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
if (e.Alt)
{
//e.Alt mi restituisce un valore booleano che indica se il tasto Alt è premuto
}
}
Possiamo ottenere la stessa cosa e anche al di fuori di questi 3 eventi, tramite
My.Computer.Keyboard.ShiftKeyDown, My.Computer.Keyboard.ControlKeyDown e My.Computer.Keyboard.AltKeyDown.
Stessa cosa per
Caps Lock, Scroll Lock e Num Lock utilizzando My.Computer.Keyboard.CapsLock, My.Computer.Keyboard.ScrollLock e My.Computer.Keyboard.NumLock . Il valore booleano restituito, ci informa se i suddetti tasti sono abilitati.
e.KeyChar viene utilizzato all'interno dell'evento KeyPressed e ci ritorna esattamente quello che viene premuto. Quindi se premiamo il tasto [A] ci ritornerà "a" ma se premiamo contemporaneamente [SHIFT]+[A] il valore restituito sarà "A".
private void Form1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
password += e.KeyChar;
//I caratteri premuti vengono memorizzati in una variabile password di tipo stringa
}
Possiamo anche simulare la pressione di uno o più tasti attraverso la funzione My.Computer.Keyboard.SendKeys.
My.Computer.Keyboard.SendKeys("F");
'Viene simulata la pressione del tasto [F]
My.Computer.Keyboard.SendKeys("Fdonet.com")
'Viene simulata la pressione dei tasti [SHIFT]+[F],[D],[O],[N],[E],[T],[.],[C],[O],[M]