none
MaskedTextBox ocutar mascara RRS feed

  • Pergunta

  • Boa tarde amigos, gostaria de saber como eu faço para ocutar a mascara do maskedbox e ela ir aparecendo de acordo com que o usuário for digitando, por ex:

    a mascara é:

    ____.__.__

    eu gostaria que esses "_" nao aparecessem e os "." só aparecessem quando fosse necessário o uso da mascara, no caso do exemplo acima, depois de 4 digitos.

    Obrigado !

    terça-feira, 3 de abril de 2012 18:12

Respostas

  • É.Tenta assim:

    bool apagando = false;
    
            private void textBox1_TextChanged(object sender, EventArgs e)
            {
                if (!apagando)
                {
                    int s = textBox1.SelectionStart;
                    if (textBox1.TextLength == 4)
                    {
                        textBox1.Text += ".";
                        textBox1.SelectionStart = s + 1;
                    }
                    else if (textBox1.TextLength == 6)
                    {
                        textBox1.Text += '-';
                        textBox1.SelectionStart = s + 1;
                    }
                }
                apagando = false;
            }
    
            private void textBox1_KeyDown(object sender, KeyEventArgs e)
            {
                if (e.KeyCode == Keys.Back || e.KeyCode == Keys.Delete) 
                {
                    apagando = true;
                }
            }
    • Marcado como Resposta Daniel Dutra terça-feira, 3 de abril de 2012 20:12
    terça-feira, 3 de abril de 2012 19:39

Todas as Respostas

  • Boa tarde.

    Use um textbox mesmo, no evento onChange do textbox você pode fazer assim:

    if (textbox.lenght == 4)
    textbox.text += ".";

    assim você vai formatando conforme você quer!!

    Consultoria .NET
    ANALISTA DESENVOLVEDOR
    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como resposta.
    Blog .Net Descomplicado

    • Sugerido como Resposta Vitor dos Santos terça-feira, 3 de abril de 2012 19:12
    terça-feira, 3 de abril de 2012 18:42
  • ok cara, deu certo . Mas quando ele adiciona a formatação ele volta para o inicio do textbox ..

    como eu faço para o usuário continuar a digitar na textbox apos a formatação???

    terça-feira, 3 de abril de 2012 19:07
  • Olá,pegue a posição do cursor no textbox antes de adicionar o ponto,depois posicione depois dele:

      int s = textBox1.SelectionStart;
                if (textBox1.TextLength == 4)
                {
                    textBox1.Text += ".";
                    textBox1.SelectionStart = s+1;
                }
    terça-feira, 3 de abril de 2012 19:12
  • O exemplo do Vitor Santos resolveu seu problema?

    Consultoria .NET
    ANALISTA DESENVOLVEDOR
    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como resposta.
    Blog .Net Descomplicado

    terça-feira, 3 de abril de 2012 19:20
  • ok vitor, deu certim, mais o botão para apagar não está funcionando, porque será ?

    terça-feira, 3 de abril de 2012 19:35
  • É.Tenta assim:

    bool apagando = false;
    
            private void textBox1_TextChanged(object sender, EventArgs e)
            {
                if (!apagando)
                {
                    int s = textBox1.SelectionStart;
                    if (textBox1.TextLength == 4)
                    {
                        textBox1.Text += ".";
                        textBox1.SelectionStart = s + 1;
                    }
                    else if (textBox1.TextLength == 6)
                    {
                        textBox1.Text += '-';
                        textBox1.SelectionStart = s + 1;
                    }
                }
                apagando = false;
            }
    
            private void textBox1_KeyDown(object sender, KeyEventArgs e)
            {
                if (e.KeyCode == Keys.Back || e.KeyCode == Keys.Delete) 
                {
                    apagando = true;
                }
            }
    • Marcado como Resposta Daniel Dutra terça-feira, 3 de abril de 2012 20:12
    terça-feira, 3 de abril de 2012 19:39