Logo

LA GESTIONE DELLA TASTIERA IN VB.NET


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]


Fonte web: https://www.fdonet.com/programmazione/vbnet/la-gestione-della-tastiera-in-vb-net.aspx