none
vb.net textbox() aceptar colo numeros y un punto RRS feed

  • Pregunta

  • saludos!

    en el siguiente codigo estoy tratando que el textbox me acepte solo numeros y un solo punto.

        Private Sub TextBox_intervalo_a_signo_vital_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox_intervalo_a_signo_vital.KeyPress
            If Asc(e.KeyChar) <> 8 Then
                If Asc(e.KeyChar) < 48 Or Asc(e.KeyChar) > 57 Then
                    e.Handled = True
                End If
                If Asc(e.keychar) = 46 Then
                    e.Handled = true
                End If
            End If
        End Sub

    pero no me funciona, no me agarra el punto.

    otra cosa les explico para que quiero hacer esto, es que tengo 2 textbox:

    TextBox_intervalo_a_signo_vital

    TextBox_intervalo_b_signo_vital

    y ambos en sus codigo KeyPress tienen el mismo codigo, y lo que quiero es que me compare de que:

    CInt(TextBox_intervalo_a_signo_vital) <= CInt(TextBox_intervalo_b_signo_vital)

    es una validacion y funfiona, pero no me esta funcionando que inserte un punto.

    gracias!

    martes, 12 de abril de 2016 11:29

Respuestas

  • Tienes que hacer esto:

        Private Sub TextBox_intervalo_a_signo_vital_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox_intervalo_a_signo_vital.KeyPress
            If Asc(e.KeyChar) <> 8 Then
                If Asc(e.KeyChar) < 48 Or Asc(e.KeyChar) > 57 Then
                    e.Handled = True
                End If
                If Asc(e.keychar) = 46 Then
                    e.Handled = FALSE   ' <<< Para que admita el punto.
                End If
            End If
        End Sub


    Saludos, Javier J

    martes, 12 de abril de 2016 11:55
  • Hola,

    [-]En el siguiente código estoy tratando que el textbox me acepte solo números y un solo punto.

    Puedes intentar hacer esto.

     Private Sub TextBox_intervalo_a_signo_vital_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox_intervalo_a_signo_vital.KeyPress
    
            'Si no hay un punto en el textBox devuelve -1
            Dim existe As Integer = TextBox_intervalo_a_signo_vital.Text.IndexOf(".")
    
            If Char.IsNumber(e.KeyChar) Then
                e.Handled = False
            Else
                'Si es punto
                If Asc(e.KeyChar) = 46 Then
    
                    If existe <> -1 Then
                        e.Handled = True
                    Else
                        e.Handled = False
                    End If
    
                    'Si es la tecla borrar
                ElseIf Asc(e.KeyChar) = 8 Then
                    e.Handled = False
                Else
                    e.Handled = True
                End If
    
            End If
    
        End Sub

    Como puedes ver permito solo los números, pero también habilito la tecla borrar, por si el usuario digita mal, además valido si ya existe un punto en el textBox.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    martes, 12 de abril de 2016 16:31
  • "vb.net combobox con access" preguntó:

    > en el siguiente codigo estoy tratando que el textbox
    > me acepte solo numeros y un solo punto.

    Hola:

    Aparte de evitar que el usuario pueda teclear LETRAS y VARIOS PUNTOS, entiendo que también deberás de impedir que pueda PEGAR desde el Portapapeles de Windows lo que le venga en gana.

    Si así lo crees necesario, en el siguiente enlace encontrarás el código fuente de un control TextBox numérico personalizado.

    Validar que un textbox slo acepte + , - , punto , coma pero solo una vez cada uno???

    Un saludo


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.

    miércoles, 13 de abril de 2016 6:29
    Moderador

Todas las respuestas

  • Tienes que hacer esto:

        Private Sub TextBox_intervalo_a_signo_vital_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox_intervalo_a_signo_vital.KeyPress
            If Asc(e.KeyChar) <> 8 Then
                If Asc(e.KeyChar) < 48 Or Asc(e.KeyChar) > 57 Then
                    e.Handled = True
                End If
                If Asc(e.keychar) = 46 Then
                    e.Handled = FALSE   ' <<< Para que admita el punto.
                End If
            End If
        End Sub


    Saludos, Javier J

    martes, 12 de abril de 2016 11:55
  • Hola,

    [-]En el siguiente código estoy tratando que el textbox me acepte solo números y un solo punto.

    Puedes intentar hacer esto.

     Private Sub TextBox_intervalo_a_signo_vital_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox_intervalo_a_signo_vital.KeyPress
    
            'Si no hay un punto en el textBox devuelve -1
            Dim existe As Integer = TextBox_intervalo_a_signo_vital.Text.IndexOf(".")
    
            If Char.IsNumber(e.KeyChar) Then
                e.Handled = False
            Else
                'Si es punto
                If Asc(e.KeyChar) = 46 Then
    
                    If existe <> -1 Then
                        e.Handled = True
                    Else
                        e.Handled = False
                    End If
    
                    'Si es la tecla borrar
                ElseIf Asc(e.KeyChar) = 8 Then
                    e.Handled = False
                Else
                    e.Handled = True
                End If
    
            End If
    
        End Sub

    Como puedes ver permito solo los números, pero también habilito la tecla borrar, por si el usuario digita mal, además valido si ya existe un punto en el textBox.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    martes, 12 de abril de 2016 16:31
  • "vb.net combobox con access" preguntó:

    > en el siguiente codigo estoy tratando que el textbox
    > me acepte solo numeros y un solo punto.

    Hola:

    Aparte de evitar que el usuario pueda teclear LETRAS y VARIOS PUNTOS, entiendo que también deberás de impedir que pueda PEGAR desde el Portapapeles de Windows lo que le venga en gana.

    Si así lo crees necesario, en el siguiente enlace encontrarás el código fuente de un control TextBox numérico personalizado.

    Validar que un textbox slo acepte + , - , punto , coma pero solo una vez cada uno???

    Un saludo


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.

    miércoles, 13 de abril de 2016 6:29
    Moderador
  • Solo números If Char.IsDigit(e.KeyChar) Then e.Handled = False ElseIf Char.IsControl(e.KeyChar) Then e.Handled = False ElseIf e.KeyChar = "." And Not TextBox1.Text.IndexOf(".") Then e.Handled = True ElseIf e.KeyChar = "." Then e.Handled = False Else e.Handled = True End If Números y signo negativo If Char.IsDigit(e.KeyChar) Then e.Handled = False ElseIf Char.IsControl(e.KeyChar) Then e.Handled = False ElseIf e.KeyChar = "." And Not TextBox3.Text.IndexOf(".") Then e.Handled = True ElseIf e.KeyChar = "." Then e.Handled = False Else End If If Char.IsDigit(e.KeyChar) Then e.Handled = False ElseIf Char.IsControl(e.KeyChar) Then e.Handled = False ElseIf e.KeyChar = "-" And Not TextBox3.Text.IndexOf("-") Then e.Handled = True ElseIf e.KeyChar = "-" Then e.Handled = False Else End If Lo encontré en un blog :)
    jueves, 12 de diciembre de 2019 4:05