miércoles, 11 de noviembre de 2009

Hacer que un Textbox solo acepte numeros.

Bueno pues esto es algo que me han preguntado mucho, por ahi en la web he visto inclusive controles personalizados definidos para esta tarea, pero yo en particular prefiero las cosas sencillas y eficaces, asi que aqui les dejo un codigo de apenas unas lineas implementado en el evento KeyDown del textbox, que ocurre justo antes de que el caracter pulsado sea agregado en el textbox, esto es muy util si desarrollan aplicaciones con calculos, como una calculadora por ejemplo.

Ok y aqui esta el codigo


Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown


'Omitimos las teclas suprimir, flecha izquierda, flecha derecha, backspace, y el punto decimal
If e.KeyCode <> 190 And e.KeyCode <> Keys.Back And e.KeyCode <> Keys.Delete _
And e.KeyCode <> Keys.Right And e.KeyCode <> Keys.Left Then


'Verificamos que la tecla presionada este en el rango de 0 a 9, si no cancelamos
If e.KeyCode < Keys.D0 Or e.KeyCode > Keys.D9 Then
e.SuppressKeyPress = True
End If
End If


'Si se tecleo el punto decimal ,verificamos que el textbox no contenga ya un punto decimal
'Al mismo tiempo verificamos que el textbox no este vacio
If e.KeyCode = 190 And (TextBox1.Text.Contains(".") Or TextBox1.Text = "") Then
e.SuppressKeyPress = True
End If


End Sub

Cualquier error por favor haganmelo saber.


Probado en Visual Basic 2008

3 comentarios:

  1. Excelente!! justo lo que buscada, pero seria aun mas excelente si tu logras hacerlo pero validando el ingreso de datos con formato de correo.

    Ahi si la haces bien!!!

    Igual Interesante el Blog.

    Saludos.

    Mi correo es: ecieza.18@hotmail.com
    Desarrollador .net junior

    ResponderEliminar
  2. Bueno pues si te refieres a una direccion de correo electronico, eso debe de ser facil con los metodos para manipular cadenas, hoy mismo publico una solucion para esto

    ResponderEliminar
  3. está muy útil pero no tiene como codificar entrede de texto

    ResponderEliminar