VB.NET : Intercettare la pressione dei “tasti speciali”
Mi è capitata spesso la necessità di dover intercettare, in una textbox, la pressione di quei tasti che normalmente non possono restituire un codice ascii, come ad esempio i tasti funzione.
Tale operazione è abbastanza semplice facendo affidamento alla funzione GetAsyncKeyState della libreria user32.
Dichiariamo la funzione all’inizio del nostro modulo:
Private Declare Function GetAsyncKeyState Lib "user32" Alias "GetAsyncKeyState" (ByVal vKey As Keys) As Short |
Adesso dobbiamo intercettare la pressione del nostro tasto speciale nella textbox, per far questo ricorriamo all’evento KeyUp del nostro controllo:
Private Sub txtText_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtText.KeyUp If GetAsyncKeyState(Keys.F12) Then ' qui immetto il codice che deve generare l'evento sulla pressione del tasto F12 End If End Sub |
In questo esempio particolare ho intercettato la pressione del tasto F12, ma intercettare qualsiasi altro tasto è la cosa più semplice del mondo: l’enumerazione “Keys” ha già al suo interno tutti i tasti disponibili, basta scorrere l’elenco:
Come vedete ci sono tutti i tipi di tasti, compresi quelle delle tastiere multimediali come i controlli di volume.