none
Como Validar MaskedTextbox? RRS feed

  • Pergunta

  • Tenho um campo de cadastro o qual mistura textbox comuns com maskedtextbox, criei um código de validação que não permite o usuário efetuar o cadastro caso uma delas estiverem vazias.Mas esta apenas validando as textbox comuns e não as maskedtextbox, permitindo efetuar o cadastro com campos importantes estando vazios.Segue o código que explica como faço este processo.

    private void btnInserir_Click(object sender, EventArgs e)
        {
            ConsultaPacientes.msg = true;
            if (cbxConvenio.SelectedItem == null)
            {
                MessageBox.Show("O campo PAGAMENTO deve ser preenchido!");
                cbxConvenio.Focus();
                cbxConvenio.BackColor = Color.LightSeaGreen;
                cbxConvenio.DroppedDown = true;
            }
            else if(txtNome.Text == string.Empty)
            {
                MessageBox.Show("O campo NOME deve ser preenchido!");
                txtNome.BackColor = Color.LightSeaGreen;
            }
            else if (String.IsNullOrWhiteSpace(txtCPF.Text))
            {
                MessageBox.Show("O campo CPF deve ser preenchido!");
                txtCPF.BackColor = Color.LightSeaGreen;
            }
            else if (txtRG.Text == "")
            {
                MessageBox.Show("O campo RG deve ser preenchido!");
                txtRG.BackColor = Color.LightSeaGreen;
            }
            else if (txtCidade.Text == string.Empty)
            {
                MessageBox.Show("O campo CIDADE deve ser preenchido!");
                txtCidade.BackColor = Color.LightSeaGreen;
            }
            else if (txtRua.Text == string.Empty)
            {
                MessageBox.Show("O campo RUA deve ser preenchido!");
                txtRua.BackColor = Color.LightSeaGreen;
            }
            else if(txtCelular.Text == "" || txtFixo.Text == "")
            {
                MessageBox.Show("Um dos campos de telefone deve ser preenchido!");
                txtCelular.BackColor = Color.LightSeaGreen;
                txtFixo.BackColor = Color.LightSeaGreen;
            }
            else
            {
                if (btnInserir.Text == "Inserir")
                {
                    btnInserir.Tag = "Inserir Novo Paciente";
                    Pacientes_TCCTableAdapter TaPaciente = new Pacientes_TCCTableAdapter();
                    TaPaciente.Insert(txtNome.Text, txtCPF.Text, txtRG.Text, cbxSexo.Text, dtpData.Value, txtCidade.Text, txtEstado.Text, txtBairro.Text, txtCEP.Text,
                    txtRua.Text, txtNumero.Text, txtCelular.Text, txtFixo.Text, txtEmail.Text, cbxConvenio.Text);
                    Close();
    
                    if (MessageBox.Show("Paciente gravado com o ID: " + TaPaciente.UltimooID() + " deseja fazer outro cadastro?", "Confirma", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No)
                    {
                        Close();
                    }
                    else
                    {
                        FrmCadCliente novo = new FrmCadCliente();
                        novo.Show();
                    }
                }
    
    
                else
                {
                    Pacientes_TCCTableAdapter TaPaciente = new Pacientes_TCCTableAdapter();
                    TaPaciente.Update(txtNome.Text, txtCPF.Text, txtRG.Text, cbxSexo.Text, dtpData.Value, txtCidade.Text, txtEstado.Text,
                    txtBairro.Text, txtCEP.Text, txtRua.Text, txtNumero.Text, txtCelular.Text, txtFixo.Text, txtEmail.Text, cbxConvenio.Text, (int.Parse(txtID.Text)));
                    MessageBox.Show("Paciente editado com sucesso!");
                    Close();
                }
            }
        }
    Acabei nomeando as maskedtextbox como as textbox normais pois já havia programado boa parte da aplicação quando fiz a substituição por maskedtextbox. Os campos que usam maskedtextboxsão os campos de CPF, RG, Celular e Fixo(telefone).

    domingo, 13 de novembro de 2016 17:55

Respostas

  • Para os campos que são MaskedTextbox, ao invés de usar maskedTextBox.Text, use maskedTextBox.MaskCompleted ou maskedTextBox.MaskFull.

    Ex:

    // ...
    
    else if (!txtCPF.MaskCompleted) // Ou o MaskFull
            {
                MessageBox.Show("O campo CPF deve ser preenchido!");
                txtCPF.BackColor = Color.LightSeaGreen;
            }
    
    // ...

    A diferença entre o MaskCompleted é que ele só valida os elementos obrigatórios da máscara, já o MaskFull valida tanto obrigatórios quanto opcionais.


    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".

    Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".


    domingo, 13 de novembro de 2016 18:56

Todas as Respostas

  • Para os campos que são MaskedTextbox, ao invés de usar maskedTextBox.Text, use maskedTextBox.MaskCompleted ou maskedTextBox.MaskFull.

    Ex:

    // ...
    
    else if (!txtCPF.MaskCompleted) // Ou o MaskFull
            {
                MessageBox.Show("O campo CPF deve ser preenchido!");
                txtCPF.BackColor = Color.LightSeaGreen;
            }
    
    // ...

    A diferença entre o MaskCompleted é que ele só valida os elementos obrigatórios da máscara, já o MaskFull valida tanto obrigatórios quanto opcionais.


    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer".

    Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".


    domingo, 13 de novembro de 2016 18:56
  • Funcionou perfeitamente!! obrigado!!!
    domingo, 13 de novembro de 2016 19:24