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 Sub Form1_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
Select Case e.KeyCode
Case Keys.F
'Premuto il tasto F
Case Keys.D
'Premuto il tasto D
Case Keys.O
'Premuto il tasto O
End Select
End Sub
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 Sub Form1_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
If e.Alt Then
'e.Alt mi restituisce un valore booleano che indica se il tasto Alt è premuto
End If
End Sub
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 Sub Form1_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress
password &= e.KeyChar
'I caratteri premuti vengono memorizzati in una variabile password di tipo stringa
End Sub
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]