none
textbox que acepte solo nuemors con decimales RRS feed

  • Pregunta

  • Buenas Noches

    saludos:

    Programo en vb.net

    este código que presento a continuación permite  aceptar solo números a un textbox

     Private Sub txtEfectivo_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtEfectivo.KeyPress
            
            If Char.IsDigit(e.KeyChar) Then
                e.Handled = False
            ElseIf Char.IsControl(e.KeyChar) Then
                e.Handled = False
            Else
                e.Handled = True
            End If
        End Sub

    pero tiene un problemas que no acepta decimales, por ejemplo, si deseo introducir: 25.300,50, lo permite. 

    Saludos Cordiales 

    jueves, 13 de agosto de 2015 0:52

Respuestas

  • Hola,

    Te sugiero que utilices en el evento Lostfocus del Textbox un formateo numérico, es decir: si el usuario ingresa 24560,87 el código que te dejo a continuación lo transformará a 24.560,87. 

        Private Sub TextBox1_LostFocus(sender As Object, e As EventArgs) Handles TextBox1.LostFocus
            Dim NumAuxiliar As Double
            NumAuxiliar = TextBox1.Text
    
            TextBox1.Text = FormatNumber(NumAuxiliar, 2)
    
        End Sub
    Obviamente esto lo debes ajustar con el nombre de tu textbox.

    Si la solución te ayuda, no olvides marcar como respuesta y votar.


    Saludos desde Chile.

    • Marcado como respuesta EliannyRD jueves, 13 de agosto de 2015 20:23
    jueves, 13 de agosto de 2015 15:23
  • Tendrías que permitir introducir el separador decimal (aunque sólo uno):

        Private Sub txtEfectivo_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtEfectivo.KeyPress
            If Not (Char.IsControl(e.KeyChar) OrElse Char.IsDigit(e.KeyChar)) _
                AndAlso (Not e.KeyChar = "," Or txtEfectivo.Text.Contains(",")) Then
                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 EliannyRD jueves, 13 de agosto de 2015 20:25
    jueves, 13 de agosto de 2015 7:29

Todas las respuestas

  • Tendrías que permitir introducir el separador decimal (aunque sólo uno):

        Private Sub txtEfectivo_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtEfectivo.KeyPress
            If Not (Char.IsControl(e.KeyChar) OrElse Char.IsDigit(e.KeyChar)) _
                AndAlso (Not e.KeyChar = "," Or txtEfectivo.Text.Contains(",")) Then
                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 EliannyRD jueves, 13 de agosto de 2015 20:25
    jueves, 13 de agosto de 2015 7:29
  • Gracias por contestar. 

    el código va mejorando, pero le falta un poquito, solo acepta coma, pero falta el punto por ejemplo:

    1500,60 y debería ser: 1.500,60

    Saludos

    jueves, 13 de agosto de 2015 10:48
  • Hola,

    Te sugiero que utilices en el evento Lostfocus del Textbox un formateo numérico, es decir: si el usuario ingresa 24560,87 el código que te dejo a continuación lo transformará a 24.560,87. 

        Private Sub TextBox1_LostFocus(sender As Object, e As EventArgs) Handles TextBox1.LostFocus
            Dim NumAuxiliar As Double
            NumAuxiliar = TextBox1.Text
    
            TextBox1.Text = FormatNumber(NumAuxiliar, 2)
    
        End Sub
    Obviamente esto lo debes ajustar con el nombre de tu textbox.

    Si la solución te ayuda, no olvides marcar como respuesta y votar.


    Saludos desde Chile.

    • Marcado como respuesta EliannyRD jueves, 13 de agosto de 2015 20:23
    jueves, 13 de agosto de 2015 15:23
  • Resuelto 100x%

    Gracias 

    jueves, 13 de agosto de 2015 20:23