TextBox només números (validació)

Hola: aquí els deixo un exemple molt senzill per avaluar les tecles pressionades quan s'ingressen dades en un TextBox i només permetre els nombres ignorant tot el que no sigui un nombre. És molt bàsic però els servirà de punt de partida per validar qualsevol ingrés. A continuació el codi ....

 Private Sub TextBox1_KeyPress (ByVal sender As Object, ByVal i 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 tipus char té diverses propietats que ens resultarien molt útils a l'hora de realitzar validacions. En l'exemple veiem la propietat. IsNumber ... aca algunes més per recordar:

IsControl: Indica si el caràcter unicode especificat es classifica per categories com un caràcter de Control

IsDigit: Indica si el caràcter unicode especificat es classifica per categories com un Dígit Decimal

IsLetter: Indica si el caràcter unicode especificat es classifica per categories com un caràcter alfabètic

IsLetterOrDigit: Indica si el caràcter unicode especificat es classifica per categories com un caràcter alfabètic o un Dígit Decimal

i hi ha moltes més ... els deixo un consell sa ... sempre consulteu l'ajuda.

34 Responses to "TextBox només números (validació)"

  1. Nino diu:

    ehemp .. Leh nnya gg!!
    klow BWT aplikasi parkir, menentukan harga masuk donen harga keluarnya gmna?
    low bzamah sklian KCH contoh aplikasi parikir!!
    HHA ...!
    tolong pzn! ea ...!
    low TWU kirimin k correu electrònic Aku ea!
    thank s!

  2. Lena! Diu:

    Hola

    Saps que recentment estic començant a vb i m'estan ensenyat vn.net 2008, i vull fer un tipus de calculadora bàsica no tan complexa però necessito validar els texbox (Només Nombres), en el codi que la teva exposes em dóna problema amb el lt ja que no aquesta declaració, m'imagino que després em donarà problema gt, com els declare perquè funcioni.

    Gràcies per endavant ..

    • yagreor diu:

      Mira els caràcters "<" i ">" no són de VB. NET, són d'HTML i haurien d'aparèixer com "" respectivament. Així la intrucció quedaria:
      If (Not Char.IsNumber (e.KeyChar) And e.KeyChar Microsoft.VisualBasic.ChrW (8)) Then

      es que la pregunta és velleta però vaig pensar en futurs visitants xD.

      • juan diu:

        hola, bones

        Necessito fer un tabajo pràctic, i tinc un TextBox, i he de validar si és un nombre o un text. Per exemple si he de ingressar el DNI, he de verificar que sigui numero, i no sé com fer-ho, si algú em podria ajudar, moltes gràcies.

    • Christian diu:

      Espero et serveixi.

      Et valida nuemros enters o decimals, li pots dir fins quants decimals t'accepti i quin serà el símbol del decimal punt o coma, depenent el país.

      Public Sub ValidaNumero (ByVal i 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 diu:

    Aqui els deixo un codi per validar sol Nombres No oblidar que és en l'esdeveniment keypress de la caixa de text que vas a validar:
    Private Sub txt_Cantidad_KeyPress (ByVal sender As Object, ByVal i As System.Windows.Forms.KeyPressEventArgs) Handles txt_Cantidad.KeyPress
    'Aquí verifiquem si la tecla pressionada és una lletra si es així, llavors no es prengués o no es mostrés la lletra.
    If Char.IsLetter (e.KeyChar) Then
    e.Handled = True
    Else
    'Aquí verifica si s'ha pressionat alguna tecla de control, pot ser backspace, tabulardor, si es així, el deixés passar normal pork pots esborrar.
    If Char.IsControl (e.KeyChar) Then
    e.Handled = False
    Else
    'Aquí verifica si és un separador o espai en blanc, si es així, no ho deixa passar.
    If Char.IsSeparator (e.KeyChar) Then
    e.Handled = True
    Else
    'Aquí Verifica si la tecla premuda és un nombre, si es així, normal el deixa passar.
    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 diu:

    x fi algú q es digni a fer codis com la gent iq funcioni x sobre de tot! gràcies afecte em ahorraste l'estrès ... TQM!

  5. Ruben diu:

    Bones meus amics una consulta, el condigo que donen si funciona enmodo consola però de cap manera web no, saben com realitzar-lo per fa donin-me 1 manito .....

    Grcias .............

  6. ALEX diu:

    VOLDRIA SABER COM ES PODEN VALIDAR EL SIGNE MENYS I EL PUNT DECIMAL ... GRÀCIES

  7. juan diu:

    hola, bona nit

    Necessito fer un tabajo pràctic, i tinc un TextBox, i he de validar si és un nombre o un text. Per exemple si he de ingressar el DNI, he de verificar que sigui numero, i no sé com fer-ho, si algú em podria ajudar, moltes gràcies.

  8. PAM diu:

    Nois definitivament això és una benedicció, no em puc imaginar que hagués estat de la meva sense aquest codi
    MIL GRACIASSSSSS!
    :)

  9. Edwin Rivas diu:

    Això aquesta excel · lent, gràcies amic.

  10. Miguel Angel diu:

    Aquesta Ok.

    Aquest codi m'ha ajudat molt.

  11. de carrer diu:

    ta chido

    chewere

  12. gino Sanclemente diu:

    hola a tots .. molt bo el codi, m'ha servit. ara voldria q m'ajudés ja q estic treballant amb un grid q conté un objecte datagridviewcomboboxcolumn ai els va el codi per veure si m'ajuden a trobar l'error o el q li faci falta:

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

    CboRequisitoColumn.Name = "Matèria"
    Me.DGVMaterias.Columns.Add (CboRequisitoColumn)
    sQuery = "SELECT asg_codigo es codi, asg_nombre es descripció 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 = "Dades"
    my_DGVCboColumn.DisplayMember = Ds_datos.Tables (0). Columns ("descripcio"). ToString
    my_DGVCboColumn.ValueMember = Ds_datos.Tables (0). Columns ("codi"). ToString

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

    'L'anterior crea els grid
    'El següent és on vull
    'Assignar o inseriu el codi q em dóna el
    'Objecte my_DGVCbocolumn q es troba dins de DGVMaterias xq crec jo q no he de
    'Fer referència 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" & Codi & "," & r & ""
    Ds_Datos = Accesar_Datos.GetDataSet (sQuery, sConexion)
    Next KROW
    Catch ex As Exception
    Msgbox (ex.Message, MsgBoxStyle.Critical, "Error")
    End Try

    End Sub

    'Per endavant gràcies

  13. sneyder ric diu:

    hola, voldria saber com fer per q en una caixa de text només puguin digitar lletres i res de nombres.
    pd; el necessito per el mes aviat possible si es pot avui millor.
    moltes gràcies per l'atenció prestada.

    • MACHM diu:

      Private Sub TextBox2_TextChanged (ByVal sender As System.Object, ByVal i As System.EventArgs) Handles TextBox2.TextChanged
      If IsNumeric (TextBox2.Text) Then
      Msgbox ("Deu ser lletres")
      End If
      End Sub

    • Kike diu:

      posa els mateix i e.hendled poses el contrari .... si és false el canvies a true i viceversa ....

  14. Lyn diu:

    moltes gràcies!! x aquest bloc xq estic fent la meva proye i ja no em fa el cap si poguessin ajudar amb això els agraeixo:
    tinc un form on ingrés les dades i altres amb un grid on consulto però resulta q quan vull consultar des del primer la informació q tinc guardada en el grid no passa naa naa jo ho filtri per la primary key però no: <si em inspiren els agraeixo

  15. granota diu:

    com puc fer perquè en un TextBox aparesca una llegenda quan ingressi dades en un altre TextBox???? si algú em vaig poder ajudar l'hi agrairé

  16. cristian diu:

    consulta com es pot fer que al moment d'ingressar els números al texbox aquests automàticament posi els punts dels milers

  17. andres diu:

    Si us plau em poden ajudar, necessito validar l'ingrés de noms en un text box, ja tinc validat que només admeti números, ara necessito que validi l'ingrés del primer número que només sigui el número 2.

  18. Sentinel diu:

    saben per ahi vaig trobar alguns codi una mica complexos per digitar sol text o números, però en si els porto un codi molt senzill, i simplemte prou canviar un sol paràmetre perquè en faci la diferència entre acceptar text o números, bo sense més que dir i en espera que els sae de molta utilitat aqui els hi va:

    primer fem referència a:

    Imports System.Windows.Forms.Form

    ia continuació creem una funció que contrendra el codi principal per verificar el seu contingut així:

    Public KeyAscii As Short

    'Funció per permetre únicament números, punt, coma, tecla de retrocés i enter
    Function Tecla_Presionada (ByVal KeyAscii As Short) As Short
    If Instr ("0123456789.,", Chr (KeyAscii)) = 0 Then (així només ha d'admetre números, i el que ja expliqye anteriorment, però si traiem "= 0" serà al revés només ha d'admetre lletres, espero m'entenguin sinó després els 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

    Un cop feta la funció ens anem al textbox1 per així dir-ho vostès sabran com en diuen això si en l'esdeveniment KeyPress i li digitamos el següent:

    Private Sub TextBox1_KeyPress (ByVal sender As Object, ByVal i 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

    I llest depurem el programa i ja està, això és tot amics espero els troba estat d'utilitat, fins ara, qualsevol dubte comentin ...

  19. Aleschka diu:

    Molt bo i útil teu post!
    nserio em vas salvar!!
    moltes graciass
    =)

  20. carlos diu:

    Per ser perfecte només li falta el control de la coma digital i la col · locació automàtica dels punts de milers.

    Gràcies

  21. Joseph diu:

    hola voldria q m'ajudin vull q un TextBox m'accepti sol lletres i espais
    ho necessito el més aviat possible gràcies

  22. Naty diu:

    hola serà que em puguin ajudar amb el codi per acceptar però necessito extreure dades des de la Bd però no es com fer-ho porfis si poden els hi agradecede ...

  23. Andres diu:

    hola estic també començant visual basic creï un editor de text en visual basic, tinc una pregunta que fer en un RichTextBox quan escric paraules per exemple. "Hola món" aquest espai en blanc el vull omplir amb un * així quedaria "Hola * món", però no es quina és la funció, no vull que ho faci directament en el RichTextBox sinó que mitjançant un botó tan bon punt acabi d'escriure el text donar-li clic al botó que cridi a la funció (en cas que sigui una funció) i tots els espais en blanc del RichTextBox me'ls ompli amb * quin és el codi font o quina és la funció per fer això i com diria el botó a la funció (en cas de ser una funció). Per cert és en Visual Basic 2008

  24. edwin diu:

    aquest comentari tampoc m ha ajudat molt

Comentar