TextBox Solo Números con Punto Decimal en .NET

Bien, se que hay muchos ejemplos en la red de cómo hacer esto, pero uno mas no viene mal.

Bueno esto es un procedimiento Sub, que lo podemos poner en un modulo de nuestro proyecto y evitarnos validar todo el código en cada textbox, por supuesto que se puede mejorar mucho mas, pero de momento lo dejo así

Public Sub NumConFrac(ByVal CajaTexto As Windows.Forms.TextBox, ByVal e As System.Windows.Forms.KeyPressEventArgs)
        If Char.IsDigit(e.KeyChar) Then
            e.Handled = False
        ElseIf Char.IsControl(e.KeyChar) Then
            e.Handled = False
       ElseIf e.KeyChar = "." And Not CajaTexto.Text.IndexOf(".") Then
            e.Handled = True
        ElseIf e.KeyChar = "." Then
            e.Handled = False
       Else
            e.Handled = True
       End If
  End Sub

Eso es todo el sub

Ahora para llamarlo desde cualquier Textbox que necesitemos ingresar solo números, para lo cual solo agregaríamos la siguiente línea:

Private Sub TxtImporte_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtImporte.KeyPress
        NumConFrac(Me.TxtImporte, e)
End Sub

 

Posteriormente si quieren visualizar el importe formateado, solo quedaría agregar lo siguiente luego pulsar ENTER

Me.TxtImporte.Text = Format(CDec(Me.TxtImporte.Text), "###,###.00")

 

Espero les sirva de algo

Hasta la próxima

24 comentarios:

  1. Hola soy administrador de una red de blogs estuve visitando tu página http://wilfredo-patricio.blogspot.com/ y me pareció muy interesante. Me encantaría que pudiéramos intercambiar links y de esta forma ambos nos ayudamos a difundir nuestros páginas.
    Si lo deseas no dudes en escribirme.
    Exitos con tu blog.

    saludos



    Franck
    contacto: rogernad08@gmail.com

    ResponderEliminar
  2. me sirvio mucho!!! para el proyecto de analisis!!

    ResponderEliminar
  3. Hermano tremenda ayuda justo lo que necesitaba. muchisimas gracias

    ResponderEliminar
  4. Muchas Gracias por la ayuda, muy prolijo el código. Justo lo que estaba necesitando!

    ResponderEliminar
  5. Gracias a tí por visitar el blog. y que bueno que te sirva.

    Saludos cordiales

    ResponderEliminar
  6. excelente post. gracias desde Honduras!

    ResponderEliminar
    Respuestas
    1. Gracias a ti, por visitar el blog y me alegra que te haya ayudado. Saludos cordiales también para ti desde Perú.

      Eliminar
  7. Gracias por la aportación...

    ResponderEliminar
  8. Gracias por tu aporte. Seria posible modificar el codigo, de tal manera, que fuera posible utilizar las dos ultimas cibras con decimales, despues del punto.
    Gracias,
    Josep.

    ResponderEliminar
  9. BUEN APORTE!! MUCHAS GRACIAS! SALUDOS DESDE HONDURAS

    ResponderEliminar
    Respuestas
    1. Gracias por visitar el blog y disculpa por la demora en contestar.

      Eliminar
  10. gracias por tu aporte me salvaste de un examen saludos desde Bolivia

    ResponderEliminar
  11. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  12. Hola,

    Muchas gracias por tu aporte, me sirvió de mucho, un aporte mas a tu código. Esto permite que captures el separador decimal del sistema.
    /*
    Dim sep as char
    sep=Application.CurrentCulture.NumberFormat.NumberDecimalSeparator
    */
    Solo quedaria cambiar "." por la variable sep.

    Saludos.

    ResponderEliminar
    Respuestas
    1. Gracias por visitar el blog y gracias nuevamente por tu colaboración.

      Saludos cordiales

      Eliminar
  13. muchas gracias lo estuve buscando y solo aquí lo pude encontrar SALUDES

    ResponderEliminar
  14. Que bueno que te haya servidor mi estimado.

    Saludos.

    ResponderEliminar
  15. no me sirvio pero gracias

    ResponderEliminar

Novedades de .NET 9

El nuevo .NET 9, está enfocado en el rendimiento tal como lo dicen en su documentación. Mas información en este enlace.