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]