none
Que el textbox solo acepte un punto y numeros RRS feed

  • Pregunta

  • hola como puedo hacer para que solo me escriba un punto en el textbox

    gracias

    Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress
            Dim KeyAscii As Short = CShort(Asc(e.KeyChar))
            KeyAscii = CShort(SoloNumeros(KeyAscii))
            If KeyAscii = 0 Then
                e.Handled = True
            End If
           
        End Sub
    
    'FUNCION SOLO NUMEROS
        Function SoloNumeros(ByVal Keyascii As Short) As Short
            If InStr("1234567890.", Chr(Keyascii)) = 0 Then
                SoloNumeros = 0
            Else
                SoloNumeros = Keyascii
            End If
            Select Case Keyascii
                Case 8
                    SoloNumeros = Keyascii
                Case 13
                    SoloNumeros = Keyascii
                Case 46
                    
            End Select
        End Function
     'FUNCION SOLO NUMEROS


    • Editado JETET lunes, 21 de diciembre de 2015 10:02
    lunes, 21 de diciembre de 2015 10:02

Respuestas

  • Entonces no tienes más que comprobar que para el punto la propiedad SelectionStart debe ser igual a uno.

        Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress
            Dim textControl As TextBox = CType(sender, TextBox)
            If Not Char.IsControl(e.KeyChar) AndAlso Not Char.IsDigit(e.KeyChar) AndAlso e.KeyChar <> "."c Then
                ' Si no es un carácter de control, un número o un punto no es válido
                e.Handled = True
            ElseIf e.KeyChar = "."c AndAlso (textControl.SelectionStart <> 1 Or textControl.Text.IndexOf("."c) >= 0) Then
                ' Si es un punto y no es el segundo carácter o existe otro no es válido
                e.Handled = True
            End If
        End Sub


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    • Marcado como respuesta JETET lunes, 21 de diciembre de 2015 21:16
    lunes, 21 de diciembre de 2015 19:50

Todas las respuestas

  • pon un ejemplo explicito de lo que quieres hacer, p/j: quiero que solo admita 123.90
    lunes, 21 de diciembre de 2015 11:04
  • hola

    podrias validar numeros usando

    Truco: Solo Numeros en los Textboxt (Windows Forms) – VB y CSharp 

    tambien podrias usar el evento Validating, o sea dejar que se ingrese cualquier cosa y luego validarlo al quitar el foco

    public void textbox1_Validating(...){
    
       decimal val = 0;
    
       if(decimal.TryParse(textbox1.Text, out val)){
          ErrorProvider1.SetError(textbox1, "solo se permite valores numericos");
         e.Cancel = true;
       }
    
    }


    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    lunes, 21 de diciembre de 2015 12:35
  • lo que quiero hacer es que solo acepte 1 punto que no pueda escribir 2 puntos si ya hay uno

    ej

    1. correcto

    1.. incorrecto

    .1 incorecto

    el punto simpre tiene que estar en segunda posicion es decir esto acepta 5 caracteres con el punto incluido

    1.023 correcto

    10.23 incorrecto

    .1023 incorrecto

    gracias

    lunes, 21 de diciembre de 2015 13:43
  • ¿Algo así?

        Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress
            Dim textControl As TextBox = CType(sender, TextBox)
            If Not Char.IsControl(e.KeyChar) AndAlso Not Char.IsDigit(e.KeyChar) AndAlso e.KeyChar <> "."c Then
                ' Si no es un carácter de control, un número o un punto no es válido
                e.Handled = True
            ElseIf e.KeyChar = "."c AndAlso (textControl.SelectionStart = 0 Or textControl.Text.IndexOf("."c) >= 0) Then
                ' Si es un punto y es el primer carácter o existe otro no es válido
                e.Handled = True
            End If
        End Sub


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    lunes, 21 de diciembre de 2015 15:08
  • esta ok Asier, lo que pasa es que tendria que escribir solo 1.000 con el punto en 2 lugar 

    pero puedo escribir 10.00 que es erroneo 

    el punto tiene que ir siempre en segundo lugar

    Gracias

    lunes, 21 de diciembre de 2015 19:06
  • Entonces no tienes más que comprobar que para el punto la propiedad SelectionStart debe ser igual a uno.

        Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress
            Dim textControl As TextBox = CType(sender, TextBox)
            If Not Char.IsControl(e.KeyChar) AndAlso Not Char.IsDigit(e.KeyChar) AndAlso e.KeyChar <> "."c Then
                ' Si no es un carácter de control, un número o un punto no es válido
                e.Handled = True
            ElseIf e.KeyChar = "."c AndAlso (textControl.SelectionStart <> 1 Or textControl.Text.IndexOf("."c) >= 0) Then
                ' Si es un punto y no es el segundo carácter o existe otro no es válido
                e.Handled = True
            End If
        End Sub


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    • Marcado como respuesta JETET lunes, 21 de diciembre de 2015 21:16
    lunes, 21 de diciembre de 2015 19:50
  • Mucha gracias, y felices fiestas

    lunes, 21 de diciembre de 2015 21:16