Usuário com melhor resposta
validar campos com mascara

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
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.
- Sugerido como Resposta Silvaney segunda-feira, 25 de julho de 2016 11:22
- Marcado como Resposta Robson William SilvaModerator terça-feira, 26 de julho de 2016 12:31
-
Todas as 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.
- Sugerido como Resposta Silvaney segunda-feira, 25 de julho de 2016 11:22
- Marcado como Resposta Robson William SilvaModerator terça-feira, 26 de julho de 2016 12:31
-