none
Cómo poner separador de miles automático en un textbox, mientras escribo RRS feed

  • Pregunta

  • Me gustaría saber qué código debo poner para que mientras estoy escribiendo en un textbox, se vayan agregando automáticamente los puntos de los miles. No quiero que se aplique ese formato al perder el foco del textbox, sinó que se agreguen los puntos automáticamente mientras escribo. 

    Muchas gracias.

    jueves, 26 de noviembre de 2015 19:30

Respuestas

  • "Zoé D.Jiménez" preguntó:

    > ... el código me funcionó muy bien, solamente tengo la duda de qué
    > debería yo hacer para poder agregar aún así los decimales.

    ¿Te refieres a escribir MANUALMENTE los dígitos decimales tras el carácter separador decimal que estés utilizando? Si es así, tendrás que formatear el valor numérico cuando pierda el foco el control TextBox que estés utilizando para escribir los números decimales, bien en sus eventos LeaveValidating.

    Échale un vistazo al código fuente de la clase TextBoxNumericEx que encontrarás en la siguiente conversación y la adaptas a tus necesidades:

    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.

    • Marcado como respuesta Pablo Rubio lunes, 29 de enero de 2018 17:06
    viernes, 26 de enero de 2018 8:01
    Moderador
  • "IvanBcn1982" preguntó:

    > Me gustaría saber qué código debo poner para que mientras estoy escribiendo en un textbox,
    > se vayan agregando automáticamente los puntos de los miles. No quiero que se aplique ese
    > formato al perder el foco del textbox, sinó que se agreguen los puntos automáticamente
    > mientras escribo.

    Hola:

    Prueba a formatear el valor del control TextBox en su evento KeyUp, el cual se desencadenará cada vez que se suelta una tecla:

        Private Sub TextBox1_KeyUp(sender As Object, e As KeyEventArgs) Handles TextBox1.KeyUp
    
            If (TextBox1.Text <> String.Empty) Then
    
                ' Convertimos a Decimal el valor del control TextBox. Si
                ' el valor no se puede convertir a Decimal, se mostrará
                ' un 0 en lugar de producirse un error.
                '
                Dim importe As Decimal
                Decimal.TryParse(TextBox1.Text, importe)
    
                ' Formateamos a entero, sin decimales, el valor decimal obtenido.
                '
                TextBox1.Text = String.Format("{0:N0}", importe)
    
                ' Establecemos el punto de inserción al final del valor del control TextBox.
                '
                TextBox1.SelectionStart = TextBox1.TextLength
    
            End If
    
        End Sub
    

    Digamos que el código es un punto de partida de ayuda para que implementes tu propio control TextBox numérico, ya que te hago saber que, tal cual está el código, no podrás seleccionar el valor del control TextBox mediante el teclado; tendrás que seleccionarlo con el ratón.

    Si te decides por formatear el valor del control TextBox cuando éste pierda el foco, en la siguiente conversación encontrarás una clase completa para implementar un control TextBox numérico:

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

    Un saludo


    Enrique Martínez Montejo
            [MS MVP - VB]

    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.

    viernes, 27 de noviembre de 2015 18:17
    Moderador

Todas las respuestas

  • He probado con este código....

     Me.TextBoxImporte1.Text = FormatNumber(Me.TextBoxImporte1.Text, 0, TriState.False, TriState.False)

    El problema es que cuando agrega un ".", el cursor se me va al principio del textbox, y quiero que el cursor siga escribiendo al final.

    jueves, 26 de noviembre de 2015 19:35
  • "IvanBcn1982" preguntó:

    > Me gustaría saber qué código debo poner para que mientras estoy escribiendo en un textbox,
    > se vayan agregando automáticamente los puntos de los miles. No quiero que se aplique ese
    > formato al perder el foco del textbox, sinó que se agreguen los puntos automáticamente
    > mientras escribo.

    Hola:

    Prueba a formatear el valor del control TextBox en su evento KeyUp, el cual se desencadenará cada vez que se suelta una tecla:

        Private Sub TextBox1_KeyUp(sender As Object, e As KeyEventArgs) Handles TextBox1.KeyUp
    
            If (TextBox1.Text <> String.Empty) Then
    
                ' Convertimos a Decimal el valor del control TextBox. Si
                ' el valor no se puede convertir a Decimal, se mostrará
                ' un 0 en lugar de producirse un error.
                '
                Dim importe As Decimal
                Decimal.TryParse(TextBox1.Text, importe)
    
                ' Formateamos a entero, sin decimales, el valor decimal obtenido.
                '
                TextBox1.Text = String.Format("{0:N0}", importe)
    
                ' Establecemos el punto de inserción al final del valor del control TextBox.
                '
                TextBox1.SelectionStart = TextBox1.TextLength
    
            End If
    
        End Sub
    

    Digamos que el código es un punto de partida de ayuda para que implementes tu propio control TextBox numérico, ya que te hago saber que, tal cual está el código, no podrás seleccionar el valor del control TextBox mediante el teclado; tendrás que seleccionarlo con el ratón.

    Si te decides por formatear el valor del control TextBox cuando éste pierda el foco, en la siguiente conversación encontrarás una clase completa para implementar un control TextBox numérico:

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

    Un saludo


    Enrique Martínez Montejo
            [MS MVP - VB]

    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.

    viernes, 27 de noviembre de 2015 18:17
    Moderador
  • ¡Hola!, disculpa el código me funcionó muy bien, solamente tengo la duda de qué debería yo hacer para poder agregar aún así los decimales.


    jueves, 25 de enero de 2018 23:02
  • "Zoé D.Jiménez" preguntó:

    > ... el código me funcionó muy bien, solamente tengo la duda de qué
    > debería yo hacer para poder agregar aún así los decimales.

    ¿Te refieres a escribir MANUALMENTE los dígitos decimales tras el carácter separador decimal que estés utilizando? Si es así, tendrás que formatear el valor numérico cuando pierda el foco el control TextBox que estés utilizando para escribir los números decimales, bien en sus eventos LeaveValidating.

    Échale un vistazo al código fuente de la clase TextBoxNumericEx que encontrarás en la siguiente conversación y la adaptas a tus necesidades:

    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.

    • Marcado como respuesta Pablo Rubio lunes, 29 de enero de 2018 17:06
    viernes, 26 de enero de 2018 8:01
    Moderador