none
Formato en un textbox, MaskedTextBox? RRS feed

  • Pregunta

  •  Hola amigos, verán, tengo un textbox para que el usuario ingrese un código, que sería del tipo 22.111.55-9
    Lo que me gustaría es que cuando digite 22 se ponga automáticamente el punto, luego cuando digite 111 se ponga el otro punto,
    y luego de digitar 55 se ponga el guión.
    Cuál es la manera más adecuada para poder realizarlo? En este momento utilizo un MaskedTextBox, pero tengo el problema
    de que cuando lo voy a guardar a la base de datos me lo convierte a string, y mi idea es que sea un int! o sea que guarde todos
    los números pero sin los puntos y guión.
    Un saludo para todos,
    Guillermo
    sábado, 31 de enero de 2009 4:09

Respuestas

  • Hola Guillermo. Podrías suscribirte a los eventos Enter y Leave. Cuando se activa el control (se produce el evento Enter) si no hay texto establecés la máscara que querés utilizar. Cuando se desactiva el control (se produce el evento Leave) si no hay texto establecés la máscara en "". Así:

            private void maskedTextBox1_Enter(object sender, EventArgs e)  
            {  
                if (string.IsNullOrEmpty(this.maskedTextBox1.Text))  
                    this.maskedTextBox1.Mask = "000-0000";  
            }  
     
            private void maskedTextBox1_Leave(object sender, EventArgs e)  
            {  
                if (string.IsNullOrEmpty(this.maskedTextBox1.Text))  
                    this.maskedTextBox1.Mask = string.Empty;  
            } 

    Saludos,
    Nicolás.


    Nicolás Ferreira | http://nicolasferreira.com/
    • Marcado como respuesta Guiller57 martes, 3 de febrero de 2009 1:28
    lunes, 2 de febrero de 2009 10:12

Todas las respuestas

  • Hola. Tenés que establecer la propiedad TextMaskFormat en ExcludePromptAndLiterals. Cuando obtengas el valor de la propiedad Text vas a ver que no tiene la máscara. Por último, tendrías que validar que el usuario haya ingresado sólo números para finalmente convertir la cadena de texto a entero y guardar el valor en la base de datos.

    Saludos,
    Nicolás.


    Nicolás Ferreira | http://nicolasferreira.com/
    sábado, 31 de enero de 2009 13:06
  • Hola Nicolás, gracias por tu respuesta.
    Me sirvió de mucho!
    Ya que estoy hago otra consultita asi ya dejo pronto el tema de la MaskedTextBox.
    Saben alguna forma de que no quede __.___.__-_ cuando está vacio? me gustaria que los guiones como subrayado no aparezcan, será posible eso?
    Gracias de nuevo, saludos!
    Guillermo
    lunes, 2 de febrero de 2009 5:51
  • Hola Guillermo. Podrías suscribirte a los eventos Enter y Leave. Cuando se activa el control (se produce el evento Enter) si no hay texto establecés la máscara que querés utilizar. Cuando se desactiva el control (se produce el evento Leave) si no hay texto establecés la máscara en "". Así:

            private void maskedTextBox1_Enter(object sender, EventArgs e)  
            {  
                if (string.IsNullOrEmpty(this.maskedTextBox1.Text))  
                    this.maskedTextBox1.Mask = "000-0000";  
            }  
     
            private void maskedTextBox1_Leave(object sender, EventArgs e)  
            {  
                if (string.IsNullOrEmpty(this.maskedTextBox1.Text))  
                    this.maskedTextBox1.Mask = string.Empty;  
            } 

    Saludos,
    Nicolás.


    Nicolás Ferreira | http://nicolasferreira.com/
    • Marcado como respuesta Guiller57 martes, 3 de febrero de 2009 1:28
    lunes, 2 de febrero de 2009 10:12
  • Nicolás, te agradezco tus respuestas, ya he solucionado todas mis dudas :)
    Un saludo, 
    Guillermo 
    martes, 3 de febrero de 2009 1:28