Admitir letras o números en un Textbox
Escrito en Febrero 7, 2009 por Alex
La estructura Char nos permite determinar si un caracter pertenece a determinada categoría unicode, es decir, si un caracter es una letra, un número, si es mayúscula, si es minúscula, espacio en blanco etc.
Para lograr que un textbox admita solo letras, necesitamos codificar el evento KeyPress del control Textbox que es el evento que se dispara en el momento que se pulsa el teclado y utilizamos el método IsLetter de Char.
Private Sub TextBox1_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress 'si el caracter es Letra If Char.IsLetter(e.KeyChar) Then 'acepta el cracter e.Handled = False 'si es un caracter de control como Enter ElseIf Char.IsControl(e.KeyChar) Then e.Handled = False 'si es un espacio en blanco ElseIf Char.IsSeparator(e.KeyChar) Then e.Handled = False Else ' de lo contario al poner e.handled en True 'cancelamos la pulsación. e.Handled = True End If End Sub
Acerca del E.handled
Si asignamos a E.handled un valor verdadero, le estamos indicando a .Net que nosotros ya hemos manejado esta tecla y por lo tanto la ignora.
Para admitir números en vez de letras utilizamos la misma estructura solo que ahora vamos a cambiar el método IsLetter por IsDigit.
Si queremos cambiar un caracter tecleado por otro, por ejemplo: Si queremos que cada vez que el usuario tecleé la letra “a” se escriba la letra “A” (mayúscula) no podemos cambiar el valor de Keypress porque es de solo lectura, lo que tenemos que hacer es poner valor verdadero al Handled, y utilizar la clase SendKeys.
If e.KeyChar = "a" Then e.Handled = True SendKeys.Send("A") End If
Y para pasar de minúsculas a mayúsculas todas las letras pulsadas en el control:
If Char.IsLower(e.KeyChar) Then e.Handled = True SendKeys.Send(Char.ToUpper(e.KeyChar)) End If






