TextBox solo números (validación)

Hola: acá les dejo un ejemplo muy sencillo para evaluar las teclas presionadas cuando se ingresan datos en un textbox y solo permitir los números ignorando todo lo que no sea un número. Es muy básico pero les servirá de punto de partida para validar cualquier ingreso. A continuación el código….

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
If (Not Char.IsNumber(e.KeyChar) And e.KeyChar <> Microsoft.VisualBasic.ChrW(8)) Then
e.Handled = True
End If
End Sub

El tipo char tiene varias propiedades que nos resultarían muy útiles a la hora de realizar validaciones. En el ejemplo vemos la propiedad .IsNumber… aca algunas más para recordar:

IsControl: Indica si el caracter unicode especificado se clasifica por categorias como un caracter de Control

IsDigit: Indica si el caracter unicode especificado se clasifica por categorias como un Dígito Decimal

IsLetter: Indica si el caracter unicode especificado se clasifica por categorias como un caracter alfabético

IsLetterOrDigit: Indica si el caracter unicode especificado se clasifica por categorias como un caracter alfabético o un Dígito Decimal

y hay muchas más… les dejo un consejo sano… siempre consulten la ayuda.



39 Responses to “TextBox solo números (validación)”

  1. NIno dice:

    ehemp..leh nnya gg !!
    klow bwt aplikasi parkir,menentukan harga masuk dan harga keluarnya gmna ?
    low bzamah sklian kch contoh aplikasi parikir!!
    hha…!!!
    tolong pzn!!!ea…!!!
    low twu kirimin k e-mail aku ea!!!
    thank’s!!!!

    • Nano Milo dice:

      If (IsNumeric(TxtValorConsignar.Text))

      solamente con el isNumeric es suficiente y es efectivo, ya que si le pones Not Char.IsNumber() tu puedes ingresar un número como 4353f y te dejará pasar como si la ‘f’ fuera un número

  2. Lena! dice:

    Hola

    Sabes que recién estoy empezando en vb y me están enseñado vn.net 2008, y quiero hacer un tipo de calculadora básica no tan compleja pero necesito validar los texbox (Solo Números), en el código que tu expones me da problema con el lt ya que no esta declara, me imagino que después me dará problema gt, como los declaro para que funcione.

    Gracias de antemano..

    • yagreor dice:

      Mira los caracteres “<” y “>” no son de VB .NET, son de HTML y deberían aparecer como “” respectivamente. Así la intrucción quedaría:
      If (Not Char.IsNumber(e.KeyChar) And e.KeyChar Microsoft.VisualBasic.ChrW(8)) Then

      se que la pregunta es viejita pero pensé en futuros visitantes xD.

      • juan dice:

        hola, buenas

        Necesito hacer un tabajo practico, y tengo un textbox, y tengo que validar si es un número o un texto. Por ejemplo si tengo que ingresar el DNI, tengo que verificar que sea numero, y no se como hacerlo, si alguien me podria ayudar, muchas gracias.

    • Christian dice:

      Espero te sirva.

      Te valida nuemros enteros o decimales, le puedes decir hasta cuantos decimales te acepte y cual sera el simbolo del decimal punto o coma, dependiendo el pais.

      Public Sub ValidaNumero(ByVal e As System.Windows.Forms.KeyPressEventArgs, _
      ByVal oText As TextBox, _
      Optional ByVal pbConPuntoDec As Boolean = True, _
      Optional ByVal pnNumDecimal As Integer = 2, _
      Optional ByVal psSimbolo As String = “.”)
      Dim nDig As Integer
      Dim nCount, esDecimal, NumDecimales As Integer
      Dim esDec As Boolean
      Dim sTexto As String = String.Concat(oText.Text, e.KeyChar)
      If Asc(e.KeyChar) = Keys.Back Or Asc(e.KeyChar) = Keys.Return Then
      e.Handled = False
      Exit Sub
      End If
      If pbConPuntoDec Then
      If e.KeyChar.IsDigit(e.KeyChar) Or e.KeyChar = psSimbolo Then
      e.Handled = False
      ElseIf e.KeyChar.IsControl(e.KeyChar) Then
      e.Handled = False
      Else
      e.Handled = True
      End If
      nDig = sTexto.Length
      If nDig = 1 And e.KeyChar = psSimbolo Then
      e.Handled = True
      End If
      If oText.SelectedText “” Then
      If e.KeyChar = psSimbolo Then
      e.Handled = True
      End If
      Else
      If sTexto.IndexOf(psSimbolo) >= 0 And (nDig – (sTexto.IndexOf(psSimbolo) + 1)) > pnNumDecimal Then
      e.Handled = True
      End If
      End If
      Else
      If e.KeyChar.IsDigit(e.KeyChar) Then
      e.Handled = False
      ElseIf e.KeyChar.IsControl(e.KeyChar) Then
      e.Handled = False
      Else
      e.Handled = True
      End If
      End If
      End Sub

  3. Hamlet Medina Sánchez dice:

    Aqui les dejo un codigo para validar solo Numeros No olvidar que es en el evento keypress de la caja de texto que vas a validar :
    Private Sub txt_Cantidad_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txt_Cantidad.KeyPress
    ‘Aqui verificamos si la tecla presionada es una letra si es asi entonces no se tomara o no se mostrara la letra.
    If Char.IsLetter(e.KeyChar) Then
    e.Handled = True
    Else
    ‘Aqui verifica si se ha presionado alguna tecla de control, puede ser backspace,tabulardor, si es asi lo dejara pasar normal pork puedes borrar.
    If Char.IsControl(e.KeyChar) Then
    e.Handled = False
    Else
    ‘Aqui verifica si es un separador o espacio en blanco, si es asi no lo dejara pasar.
    If Char.IsSeparator(e.KeyChar) Then
    e.Handled = True
    Else
    ‘Aqui Verifica si la tecla presionada es un número, si es asi normal lo deja pasar.
    If Char.IsDigit(e.KeyChar) Then
    e.Handled = False
    Else
    e.Handled = True
    End If
    End If
    End If
    End If
    End Sub

  4. Atillio (Roberto) Correa dice:

    x fin alguien q se digne en hacer codigos como la gente y q funcione x sobre todas las cosas! gracias cariño me ahorraste el stress… tqm!

  5. Ruben dice:

    Buenas mis amigos una consulta, el condigo que dan si funciona enmodo consola pero en modo web no, saben como realizarlo por fa denme una manito…..

    Grcias………….

  6. ALEX dice:

    QUISIERA SABER COMO SE PUEDEN VALIDAR EL SIGNO MENOS Y EL PUNTO DECIMAL… GRACIAS

  7. juan dice:

    hola, buenas noches

    Necesito hacer un tabajo practico, y tengo un textbox, y tengo que validar si es un número o un texto. Por ejemplo si tengo que ingresar el DNI, tengo que verificar que sea numero, y no se como hacerlo, si alguien me podria ayudar, muchas gracias.

  8. PAM dice:

    Chiquillos definitivamente esto es una bendición, no me puedo imaginar que hubiera sido de mi sin este codigo
    MIL GRACIASSSSSS!!!!
    :)

  9. Edwin Rivas dice:

    Esto esta excelente, gracias amigo.

  10. Miguel Angel dice:

    Esta Ok.

    Este codigo me ha ayudado mucho.

  11. de calle dice:

    ta chido

    chewere

  12. gino sanclemente dice:

    hola a todos.. muy bueno el codigo, me ha servido. ahora quisiera q me ayudara ya q estoy trabajando con un grid q contiene un objeto datagridviewcomboboxcolumn ai les va el codigo para ver si me ayudan a encontrar el error o lo q le haga falta:

    Private Sub BtnAddRequisito_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnAddRequisito.Click
    Dim sConexion As String = Negocio.Conexion
    Dim Ds_datos As New DataSet
    Dim sQuery As String

    CboRequisitoColumn.Name = “Materia”
    Me.DGVMaterias.Columns.Add(CboRequisitoColumn)
    sQuery = “SELECT asg_codigo as codigo, asg_nombre as descripcion FROM spsatbasignatura where asg_semestre<" & Me.CMBSemestre.Text

    Ds_datos = Accesar_Datos.GetDataSet(sQuery, sConexion)
    my_DGVCboColumn.DataSource = Ds_datos.Tables(0)
    my_DGVCboColumn.Name = "Datos"
    my_DGVCboColumn.DisplayMember = Ds_datos.Tables(0).Columns("descripcion").ToString
    my_DGVCboColumn.ValueMember = Ds_datos.Tables(0).Columns("codigo").ToString

    Me.DGVMaterias.Columns.RemoveAt(0)
    Me.DGVMaterias.Columns.Insert(0, my_DGVCboColumn)
    End Sub

    'el anterior crea los grid
    'el siguiente es donde quiero
    'asignar o insertar el codigo q me da el
    'objeto my_DGVCbocolumn q se encuentra dentro de DGVMaterias xq creo yo q no debo
    'hacer referencia a CboRequisitoColumn

    Private Sub Agregar_Requisitos()
    Dim sQuery As String = ""
    Dim sConexion As String = Negocio.Conexion
    Dim Ds_Datos As New DataSet
    Dim KROW As Integer = 0
    Dim aux As String
    Dim r As Integer

    Try

    For KROW = 0 To Me.DGVMaterias.RowCount – 1
    aux = Me.my_DGVCboColumn.Items(KROW).ToString
    r = CType(aux, Integer)
    sQuery = "spi_spsatbrequisito_asignatura " & Codigo & "," & r & ""
    Ds_Datos = Accesar_Datos.GetDataSet(sQuery, sConexion)
    Next KROW
    Catch ex As Exception
    MsgBox(ex.Message, MsgBoxStyle.Critical, "Error")
    End Try

    End Sub

    ' de antemano gracias

  13. sneyder rico dice:

    hola, quisiera saber como hacer para q en una caja de texto solo puedan digitar letras y nada de numeros.
    pd; lo necesito para lo mas pronto posible si se puede hoy mejor.
    muchas gracias por la atencion prestada.

    • MACHM dice:

      Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged
      If IsNumeric(TextBox2.Text) Then
      MsgBox(“Debe de ser letras”)
      End If
      End Sub

    • Kike dice:

      pon los mismo y e.hendled pones lo contrario…. si es false lo cambias a true y viceversa….

  14. Lyn dice:

    muchas gracias!! x este blog xq estoy haciendo mi proye y ya no me da la cabeza si pudieran ayudarme con esto les agradezco:
    tengo un form donde ingreso los datos y otros con un grid donde consulto pero resulta q cuando quiero consultar desde el primero la informacion q tengo guardada en el grid no pasa naa naa yo lo filtre por la primary key pero no :< si me inspiran les agradezco

  15. ranita dice:

    como puedo hacer para que en un textbox aparesca una leyenda cuando ingrese datos en otro textbox???? si alguien me pude ayudar se lo agradecere

  16. cristian dice:

    consulta como se puede hacer que al momento de ingresar los numeros al texbox estos automaticamente ponga los puntos de los miles

  17. andres dice:

    Porfavor me pueden ayudar, necesito validar el ingreso de numeros en un text box, ya tengo validado que solo admita numeros, ahora necesito que valide el ingreso del primer numero que solo sea el numero 2.

  18. Sentinel dice:

    saben por ahi encontre algunos codigo un poco complejos para digitar solo texto o numeros, pero en si les traigo un codigo muy sencillo, y simplemte basta cambiar un solo parametro para que haga la diferencia entre aceptar texto o numeros,bueno sin mas que decir y en espera que les sae de mucha utilidad aqui les va:

    primero hacemos referencia a:

    Imports System.Windows.Forms.Form

    y a continuacion creamos una funcion que contrendra el codigo principal para verificar su contenido asi:

    Public KeyAscii As Short

    ‘Funcion para permitir unicamente numeros, punto, coma, tecla de retroceso y enter
    Function Tecla_Presionada(ByVal KeyAscii As Short) As Short
    If InStr(“0123456789.,”, Chr(KeyAscii)) = 0 Then(asi solo admitira numeros, y lo que ya expliqye anteriormente, pero si quitamos “= 0″ sera a la inversa solo admitira letras, espero me entiendan sino luego les explico…)
    Tecla_Presionada = 0
    Else
    Tecla_Presionada = KeyAscii
    End If
    Select Case KeyAscii
    Case 8
    Tecla_Presionada = KeyAscii
    Case 13
    Tecla_Presionada = KeyAscii
    End Select
    End Function

    Una vez hecha la funcion nos vamos al textbox1 por asi decirlo ustedes sabran como le llaman eso si en el evento KeyPress y le digitamos lo siguiente:

    Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
    Dim KeyAscii As Short = CShort(Asc(e.KeyChar))
    KeyAscii = CShort(Tecla_Presionada(KeyAscii))
    If KeyAscii = 0 Then
    e.Handled = True
    End If
    End Sub

    Y listo depuramos el programa y ya esta, eso es todo amigos espero les halla sido de utilidad, hasta luego, cualquier duda comenten…

  19. Aleschka dice:

    Muy bueno y util tu post!
    nserio me salvaste!!
    muchas graciass
    =)

  20. carlos dice:

    Para ser perfecto solo le falta el control de la coma digital y la colocacion automática de los puntos de millares.

    Gracias

  21. Joseph dice:

    hola quisiera q me ayuden quiero q un textbox me acepte solo letras y espacios
    lo necesito lo mas antes posible gracias

  22. Naty dice:

    hola sera que me puedan ayudar con el codigo para aceptar pero necesito extraer datos desde la B.d. pero no se como hacerlo porfis si pueden se los agradecede…

  23. Andres dice:

    hola estoy tambien empezando visual basic cree un editor de texto en visual basic, tengo una pregunta que hacer en un RichTextBox cuando escribo palabras por ejemplo. “Hola mundo” ese espacio en blanco lo quiero rellenar con un * asi quedaria “Hola*mundo”, pero no se cual es la funcion, no quiero que lo haga directamente en el RichTextBox si no que mediante un boton en cuanto termine de escribir el texto darle click al boton que llame a la funcion(en caso de que sea una funcion) y todos los espacios en blanco del RichTextBox me los rellene con * cual es el código fuente o cual es la funcion para hacer esto y como llamaria el boton a la funcion(en caso de ser una funcion). Por cierto es en Visual Basic 2008

  24. edwin dice:

    este comentario tampoco m ha ayudado mucho

  25. luis dice:

    quisiera que me ayudaran conl a validacion de la cedulan la validacion de la cedula que la necesito urgente porfa

  26. Daniel Lezama dice:

    necesito solo números en texbox para un sitio web y no me hacepta el Keypress ni KeyDown y decearia me pudieran ayudar gracias…!!!!

  27. darwin dice:

    olas kiero k m ayuden para k solo acepten solo letras pero k no acepten nada de numeros ni teclas expeciales podrian ayudarme

Comentar