Siguiendo con el tema de las validaciones. Qué tal si quisiéramos en una aplicación desktop que en un Textbox solo se introdujeran ciertos caracteres o solo números.

Pues no sé cómo lo hacen ustedes pero aquí les muestro una forma bastante sencilla. El evento KeyPress. Supongamos que quisiéramos introducir valores decimales solamente y no queremos que se pueda escribir nada más en nuestro Textbox.

Nos vamos al evento KeyPress de este y ponemos el siguiente código.

Ejemplo (vb):

Private Sub txtTempDesde_KeyPress( sender As System.Object, e As System.Windows.Forms.KeyPressEventArgs) Handles txtTempDesde.KeyPress

If Char.IsDigit(e.KeyChar) Or e.KeyChar = "."c or e.KeyChar = ChrW(Keys.Back) Then

e.Handled = False

Else

e.Handled = True

End If

If e.KeyChar = ChrW(Keys.Enter) Then

e.Handled = True

SendKeys.Send("{TAB}")

End If

End Sub

Para saber qué tecla se ha pulsado, debemos usar e.KeyChar. De esta forma podemos compararla con los valores deseados como ven en el ejemplo y permitir que se envié o no el valor de la pulsación de la tecla.

Esto último lo controlamos con la propiedad Handled

Then

e.Handled = False

Else

e.Handled = True

En otras ocasiones, lo que nos interesa es cambiar la tecla pulsada por otra diferente. Para eso usamos la clase SendKeys que nos brinda .net.

If e.KeyChar = ChrW(Keys.Enter) Then

e.Handled = True ' omitimos la pulsación del enter para que solo se envié una pulsación

SendKeys.Send("{TAB}") ' Enviamos la tecla “Tab”

End If

Espero que les haya sido útil y si tienen otras formas pueden compartirla en los comentarios.

Saludos.

Anuncios