1. Les capses de text tenen la funció incorporada KeyPress
Que escolta constantment el que l'usuari està prement (a l'event e) i en desa el codi ASCII de la tecla en una variable anomenada KeyAscii.

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
     ...
End sub

Amb ella podem fer que a una capsa de text es puguin escriure alguns caràcters i no d'altres (aplicant condicionals a la variable Keyascii -i consultant la taula de codis ASCII-).

Per exemple, un programa que només accepta números en una capsa de text:

Public Class Form1

    'ESCOLTA CONSTANTMENT EL QUE S_ESTA PREMENT (EVENT e) I HO DESA A KEYASCII

    Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress

        'SI ESTA FORA DELS MARGES DELS NUMEROS

        If Asc(e.KeyChar) < 48 Or Asc(e.KeyChar) > 57 Then

             'ANUL.LA ENTRADA

              e.Handled = True

        End If

    End Sub

End Class

Exercici:
Modifica el codi anterior per a que només et deixi posar lletres, Space, Intro i BackSpace (BS).

2. Hi ha també les funcions KeyDown (prémer tecla) i KeyUp (soltar tecla) i l'objecte Keys que ja té els mètodes definits per a cada tecla (Keys.A, Keys.1)
Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
       If e.KeyCode = Windows.Forms.Keys.Up Then ...
              ....
        End If
End Sub
On es poden fer servir les constant:
'Tecles de lletra
Keycode=Keys.A ... KeyCode=Keys.Z
'Fletxa avall
KeyCode = Keys.Down
'Fletxa amunt
KeyCode = Keys.Up
'Fletxa esquerra
KeyCode = Keys.Left
'Fletxa dreta
KeyCode = Keys.Right
'BARRA ESPACIADORA
KeyCode=Keys.Space
'Tecla Ctrl
KeyCode=Keys.ControlKey
'Tecla Shift
KeyCode=Keys.ShiftKey
'Tecles teclat numèric
KeyCode=Keys.NumPad0 ... KeyCode=Keys.NumPad9
etc.
Darrera modificació: dimecres, 26 d’abril 2023, 08:44