none
validar campos com mascara RRS feed

  • Pergunta

  • Oi pessoal,

    Estou com o seguinte problema:

    tenho um campo cpf. Quando deixo o campo como textbox sem mascara, consigo validar, passando mensagem para que este não pode ser vazio. Quando coloco a mascara, minha validação não funciona, passa direto.

    Esses são os códigos que estou testando:

       else if(TxtCpf.Text == "")
                    {
                        MessageBox.Show("Favor informar o CPF!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        TxtCpf.Focus();
                    }
    

    ou este:

                    if(maskedTextBox1.Text == string.Empty)
                    {
                        MessageBox.Show("Favor informar o CPF!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        maskedTextBox1.Focus();
                    }

    Onde estou errando?

    Obrigado.



    kildare

    domingo, 24 de julho de 2016 03:14

Respostas

  • Bom dia,

    No TextMaskFormat deixe como IncludeLiterals mesmo. Pois ao deixar "ExcludePrompAndLiterals" você vai excluir os caracteres. Então deixe como padrão mesmo.
    Você não conseguiu validar porque quando possui mascara e o usuário não digitou nada, o "text" do componente não é vazio "string.Empty" e sim a máscara "_._._-_".
    Para solucionar o problema, você pode remover a mascara ao comparar. Segue um exemplo:

    string cpfSemMascara = System.Text.RegularExpressions.Regex.Replace(maskedTextBox1.Text, "[^0-9]+", "");
    
    if (cpfSemMascara.Equals(string.Empty))
    {
        MessageBox.Show("Favor informar o CPF!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information);
        maskedTextBox1.Focus();
    }
     

    Observação: Observe que obtive os dados digitados removendo as mascaras e salvando em uma variável. Quando for salvar no banco, não salvo a variável e sim o maskedTextBox1.Text.

    Espero ter ajudado.

    Att,


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    segunda-feira, 25 de julho de 2016 11:22
  • Pessoal,

    Muito obrigado pela informação. Deu certo!


    kildare

    • Marcado como Resposta kjgomes quarta-feira, 27 de julho de 2016 01:01
    quarta-feira, 27 de julho de 2016 01:01

Todas as Respostas

  • Consegui resolver trocando o TextMaskFormat para ExcludePromptAndLiterais, na propriedade do textbox, porém no banco de dados o cpf não sai formatado assim (000.000.000-00). Como faço para resolver?

    kildare

    domingo, 24 de julho de 2016 04:48
  • Bom dia,

    No TextMaskFormat deixe como IncludeLiterals mesmo. Pois ao deixar "ExcludePrompAndLiterals" você vai excluir os caracteres. Então deixe como padrão mesmo.
    Você não conseguiu validar porque quando possui mascara e o usuário não digitou nada, o "text" do componente não é vazio "string.Empty" e sim a máscara "_._._-_".
    Para solucionar o problema, você pode remover a mascara ao comparar. Segue um exemplo:

    string cpfSemMascara = System.Text.RegularExpressions.Regex.Replace(maskedTextBox1.Text, "[^0-9]+", "");
    
    if (cpfSemMascara.Equals(string.Empty))
    {
        MessageBox.Show("Favor informar o CPF!", "Informação", MessageBoxButtons.OK, MessageBoxIcon.Information);
        maskedTextBox1.Focus();
    }
     

    Observação: Observe que obtive os dados digitados removendo as mascaras e salvando em uma variável. Quando for salvar no banco, não salvo a variável e sim o maskedTextBox1.Text.

    Espero ter ajudado.

    Att,


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    segunda-feira, 25 de julho de 2016 11:22
  • Pessoal,

    Muito obrigado pela informação. Deu certo!


    kildare

    • Marcado como Resposta kjgomes quarta-feira, 27 de julho de 2016 01:01
    quarta-feira, 27 de julho de 2016 01:01