none
MaskedTextBox completar com zero depois que perder o foco RRS feed

  • Pergunta

  • Tenho uma maskedtextbox com cpf e gostaria que depois que perdesse o focus(com o tab ou mouse), ele preenchesse com zero a esquerda.

     

    Agradeço desde ja.


    Gustavo Vieira Akatsu, Analista de Sistemas
    sexta-feira, 27 de janeiro de 2012 20:06

Respostas

  • Tenho uma função para formatar String que pode ser útil a você, caso queira utilizar via código fonte. Basta colocar a chamada para esta função no evento Leave do componente.

    Segue Função para formatar texto:

     

            /// <summary>
            /// Retorna uma STRING formatada.
            /// </summary>
            /// <param name="textoEntrada">STRING que será formatada</param>
            /// <param name="orientacao">Orientação da formatação: E (Esquerda) | D (Direita)</param>
            /// <param name="caracter">Caracter que será preenchido</param>
            /// <param name="tamanho">Tamanho total da string formatada</param>
            /// <returns>String formatada</returns>
            public static string FormataTexto(string textoEntrada, string orientacao, string caracter, int tamanho)
            {
                string retorno = textoEntrada;
    
                if (textoEntrada.Length < tamanho)
                {
                    string preencher = "";
                    for (int i = 0; i < tamanho - textoEntrada.Length; i++)
                    {
                        preencher += caracter;
                    }
    
                    if (orientacao.ToUpper() == "E")
                    {
                        retorno = preencher + textoEntrada;
                    }
                    else if (orientacao.ToUpper() == "D")
                    {
                        retorno = textoEntrada + preencher;
                    }
                }
                else if (textoEntrada.Length > tamanho)
                {
                    retorno = textoEntrada.Substring(0, tamanho);
                }
    
                return retorno;
            }
    


    Para utilizar a função para completar com zeros a esquerda do CPF, você pode fazer assim:

     

    Formatar("001.001.001-01", "E", "0", 15);
    

    Dessa forma terá o resultado: 0001.001.001-01

     

    Espero ter lhe ajudado.


    abs, Henry Damasceno Araujo de Lima Desenvolvedor Know How Consultoria em T.I.
    • Marcado como Resposta Gustavo X sexta-feira, 27 de janeiro de 2012 20:27
    sexta-feira, 27 de janeiro de 2012 20:25
  • ja consegui resolver... obrigado mesmo assim... fica aqui a solucao

     

    para digitar da esquerda para direita

     private void mtbcpf_KeyPress(object sender, KeyPressEventArgs e)
            {
                string buff = "";
                int i;
                if (mtbcpf.MaskCompleted)
                {
                    e.Handled = true;
                    return;
                }
                char[] chars = mtbcpf.Text.PadLeft(11,' ').ToCharArray();
                    for(i=0;i<chars.Length - 1;i++)
                        chars[i] = chars[i+1];
                chars[i]= e.KeyChar;
                for(i=0; i<chars.Length; i++)
                    buff += chars[i];
                mtbcpf.Text = buff;
            }

     

    para preencher com zero(vi em outro post daqui do forum):

     

     private void mtbcpf_Leave(object sender, EventArgs e)
            {
                // Excluo as literais para ver o que foi informado...
                mtbcpf.TextMaskFormat = MaskFormat.ExcludePromptAndLiterals;
                // ... completo com zeros. O 5 do primeiro argumento ‚ o número
                // de digitos que o usuário teria que informar...
                mtbcpf.Text = mtbcpf.Text.PadRight(11, '0');
                mtbcpf.Text = mtbcpf.Text.Trim().PadLeft(11, '0');
                // ... volto para o valor padrão, que ‚ obter o texto com literais
                mtbcpf.TextMaskFormat = MaskFormat.IncludeLiterals;
            }

     

    Obrigado mesmo assim!!

     

     


    Gustavo Vieira Akatsu, Analista de Sistemas
    • Marcado como Resposta Gustavo X sexta-feira, 27 de janeiro de 2012 20:26
    sexta-feira, 27 de janeiro de 2012 20:26

Todas as Respostas

  • Tenho uma função para formatar String que pode ser útil a você, caso queira utilizar via código fonte. Basta colocar a chamada para esta função no evento Leave do componente.

    Segue Função para formatar texto:

     

            /// <summary>
            /// Retorna uma STRING formatada.
            /// </summary>
            /// <param name="textoEntrada">STRING que será formatada</param>
            /// <param name="orientacao">Orientação da formatação: E (Esquerda) | D (Direita)</param>
            /// <param name="caracter">Caracter que será preenchido</param>
            /// <param name="tamanho">Tamanho total da string formatada</param>
            /// <returns>String formatada</returns>
            public static string FormataTexto(string textoEntrada, string orientacao, string caracter, int tamanho)
            {
                string retorno = textoEntrada;
    
                if (textoEntrada.Length < tamanho)
                {
                    string preencher = "";
                    for (int i = 0; i < tamanho - textoEntrada.Length; i++)
                    {
                        preencher += caracter;
                    }
    
                    if (orientacao.ToUpper() == "E")
                    {
                        retorno = preencher + textoEntrada;
                    }
                    else if (orientacao.ToUpper() == "D")
                    {
                        retorno = textoEntrada + preencher;
                    }
                }
                else if (textoEntrada.Length > tamanho)
                {
                    retorno = textoEntrada.Substring(0, tamanho);
                }
    
                return retorno;
            }
    


    Para utilizar a função para completar com zeros a esquerda do CPF, você pode fazer assim:

     

    Formatar("001.001.001-01", "E", "0", 15);
    

    Dessa forma terá o resultado: 0001.001.001-01

     

    Espero ter lhe ajudado.


    abs, Henry Damasceno Araujo de Lima Desenvolvedor Know How Consultoria em T.I.
    • Marcado como Resposta Gustavo X sexta-feira, 27 de janeiro de 2012 20:27
    sexta-feira, 27 de janeiro de 2012 20:25
  • ja consegui resolver... obrigado mesmo assim... fica aqui a solucao

     

    para digitar da esquerda para direita

     private void mtbcpf_KeyPress(object sender, KeyPressEventArgs e)
            {
                string buff = "";
                int i;
                if (mtbcpf.MaskCompleted)
                {
                    e.Handled = true;
                    return;
                }
                char[] chars = mtbcpf.Text.PadLeft(11,' ').ToCharArray();
                    for(i=0;i<chars.Length - 1;i++)
                        chars[i] = chars[i+1];
                chars[i]= e.KeyChar;
                for(i=0; i<chars.Length; i++)
                    buff += chars[i];
                mtbcpf.Text = buff;
            }

     

    para preencher com zero(vi em outro post daqui do forum):

     

     private void mtbcpf_Leave(object sender, EventArgs e)
            {
                // Excluo as literais para ver o que foi informado...
                mtbcpf.TextMaskFormat = MaskFormat.ExcludePromptAndLiterals;
                // ... completo com zeros. O 5 do primeiro argumento ‚ o número
                // de digitos que o usuário teria que informar...
                mtbcpf.Text = mtbcpf.Text.PadRight(11, '0');
                mtbcpf.Text = mtbcpf.Text.Trim().PadLeft(11, '0');
                // ... volto para o valor padrão, que ‚ obter o texto com literais
                mtbcpf.TextMaskFormat = MaskFormat.IncludeLiterals;
            }

     

    Obrigado mesmo assim!!

     

     


    Gustavo Vieira Akatsu, Analista de Sistemas
    • Marcado como Resposta Gustavo X sexta-feira, 27 de janeiro de 2012 20:26
    sexta-feira, 27 de janeiro de 2012 20:26
  • obrigado Henry pela ajuda!!!

     


    Gustavo Vieira Akatsu, Analista de Sistemas
    sexta-feira, 27 de janeiro de 2012 20:28