none
C# - Verificar Vários Campos em Brancos RRS feed

  • Pergunta

  • Pessoal,

    Estou tentando fazer uma verificação de varios campos em brancos no formulario, dei uma pesquisada acho que a melhor forma seria usando o foreach mas no formulario tenho um tabcontrol com duas tabs e dentro da segunda e onde preciso verificar, e nessa aba tenho 3 groupBox  onde um e o geral e dentro dele dois dividindo os dados onde cada group tem varios campos para verificar. Alguem de ideia de como fazer essa verificação ?

    quinta-feira, 11 de julho de 2013 00:52

Respostas

  • Boa noite.

    Saulo, os campos que voce tem no seu TabControl são visiveis normalmente no seu codigo, então voce pode somente digitar o nome que voce deu pra eles.

    Segue o exemplo:

    Componentes no tab control

    private void button1_Click(object sender, EventArgs e)
            {
                int numero_erros = 0;
                if (!checkBox1.Checked)
                {
                    numero_erros++;
                }
                if (!((!radioButton1.Checked && radioButton2.Checked) ||
                    (radioButton1.Checked && !radioButton2.Checked))) //um ou outro deve estar selecionado (obedecendo que o outro deve estar deselecionado)
                {
                    numero_erros++;
                }
                
                //-----------------------//
                if (numero_erros != 0)
                {
                    MessageBox.Show("Alguns campos precisam ser digitados");
                }
                else
                {
                    //tudo ok
                }
            }

    Espero que ajude

    :)

    quinta-feira, 11 de julho de 2013 05:04
  • imagino que os campos em branco são TextBox...então faça assim

    private bool VerificarCamposEmBranco(Control ctrl) { bool retorno = false; foreach (Control c in ctrl.Controls) { if (c is TextBox) { if (((TextBox)c).Text.Length == 0) { //Campo ta em branco retorno = true; ((TextBox)c).BackColor = System.Drawing.Color.Red; } else ((TextBox)c).BackColor = System.Drawing.Color.Empty; } else if (c.HasChildren) { if(VerificarCamposEmBranco(c))

    retorno = true; } } return retorno; }

    então ele retornará True se algum campo estiver em branco, e colocará em vermelho todos os que estiverem em branco.

    para chamar a funcao, voce pode fazer assim

            private void button1_Click(object sender, EventArgs e)
            {
                if (VerificarCamposEmBranco(this))
                {
                    //tem campo em branco, 
                }
                else
                {
                    //não tem campo em branco
    
                }
    
    
    
            }

    onde 'this' ele percorre desde o form que esta chamando a funcao, e todos os controles contidos nele, se você preferir pode chamar informando 'tabControl1' no lugar de this, e ele só vai percorrer o TabControl



    sábado, 13 de julho de 2013 01:55

Todas as Respostas

  • Boa noite.

    Saulo, os campos que voce tem no seu TabControl são visiveis normalmente no seu codigo, então voce pode somente digitar o nome que voce deu pra eles.

    Segue o exemplo:

    Componentes no tab control

    private void button1_Click(object sender, EventArgs e)
            {
                int numero_erros = 0;
                if (!checkBox1.Checked)
                {
                    numero_erros++;
                }
                if (!((!radioButton1.Checked && radioButton2.Checked) ||
                    (radioButton1.Checked && !radioButton2.Checked))) //um ou outro deve estar selecionado (obedecendo que o outro deve estar deselecionado)
                {
                    numero_erros++;
                }
                
                //-----------------------//
                if (numero_erros != 0)
                {
                    MessageBox.Show("Alguns campos precisam ser digitados");
                }
                else
                {
                    //tudo ok
                }
            }

    Espero que ajude

    :)

    quinta-feira, 11 de julho de 2013 05:04
  • Olá,

    Você poderia também fazer percorrer os controles do seu form.

    Para exemplificar, crie um form coloque 2 textbox e um botão, na propriedade TAG do textbox que você quer que seja validado coloque a string "obrigatorio" (só para vc separar os txb's que serão validados), depois no evento click do botão coloque o código:

      private void button1_Click(object sender, EventArgs e)
            {
                
                foreach (Control c in this.Controls)
                {
                    if (c.Tag == "obrigatorio")
                    {
                        if (c.Text == string.Empty)
                        {
                            MessageBox.Show("Preencha o campo" + c.Name);
                        }
                    }
                }
            }

    É só um exemplo, mas vc poderia sofisticar mais essa implementação....lembrando que vc poderia criar uma classe para validação e depois só reutiliza-la em outros forms/aplicações.

    Veja outro exemplo:

    public static void ClearControls(Control c)
    {
    
        foreach (Control Ctrl in c.Controls)
        {
            //Console.WriteLine(Ctrl.GetType().ToString());
            //MessageBox.Show ( (Ctrl.GetType().ToString())) ;
            switch (Ctrl.GetType().ToString())
    
            {
                case "System.Windows.Forms.CheckBox":
                    ((CheckBox)Ctrl).Checked = false;
                    break;
    
                case "System.Windows.Forms.TextBox":
                    ((TextBox)Ctrl).Text = "";
                    break;
    
                case "System.Windows.Forms.RichTextBox":
                    ((RichTextBox)Ctrl).Text = "";
                    break;
    
                case "System.Windows.Forms.ComboBox":
                    ((ComboBox)Ctrl).SelectedIndex = -1;
                    ((ComboBox)Ctrl).SelectedIndex = -1;
                    break;
    
                case "System.Windows.Forms.MaskedTextBox":
    
                    ((MaskedTextBox)Ctrl).Text = "";
                    break;
    
                case "Infragistics.Win.UltraWinMaskedEdit.UltraMaskedEdit":
                    ((UltraMaskedEdit)Ctrl).Text = "";
                    break;
    
                case "Infragistics.Win.UltraWinEditors.UltraDateTimeEditor":
                    DateTime dt = DateTime.Now;
                    string shortDate = dt.ToShortDateString();
                    ((UltraDateTimeEditor)Ctrl).Text = shortDate;
                    break;
    
                case "System.Windows.Forms.RichTextBox":
                    ((RichTextBox)Ctrl).Text = "";
                    break;
    
    
                case " Infragistics.Win.UltraWinGrid.UltraCombo":
                    ((UltraCombo)Ctrl).Text = "";
                    break;
    
                case "Infragistics.Win.UltraWinEditors.UltraCurrencyEditor":
                    ((UltraCurrencyEditor)Ctrl).Value = 0.0m;
                    break;
    
                default:
                    if (Ctrl.Controls.Count > 0)
                        ClearControls(Ctrl);
                    break;
    
            }
    
        }
    }

    Atc,

    Felipe.


    quinta-feira, 11 de julho de 2013 08:31
  • imagino que os campos em branco são TextBox...então faça assim

    private bool VerificarCamposEmBranco(Control ctrl) { bool retorno = false; foreach (Control c in ctrl.Controls) { if (c is TextBox) { if (((TextBox)c).Text.Length == 0) { //Campo ta em branco retorno = true; ((TextBox)c).BackColor = System.Drawing.Color.Red; } else ((TextBox)c).BackColor = System.Drawing.Color.Empty; } else if (c.HasChildren) { if(VerificarCamposEmBranco(c))

    retorno = true; } } return retorno; }

    então ele retornará True se algum campo estiver em branco, e colocará em vermelho todos os que estiverem em branco.

    para chamar a funcao, voce pode fazer assim

            private void button1_Click(object sender, EventArgs e)
            {
                if (VerificarCamposEmBranco(this))
                {
                    //tem campo em branco, 
                }
                else
                {
                    //não tem campo em branco
    
                }
    
    
    
            }

    onde 'this' ele percorre desde o form que esta chamando a funcao, e todos os controles contidos nele, se você preferir pode chamar informando 'tabControl1' no lugar de this, e ele só vai percorrer o TabControl



    sábado, 13 de julho de 2013 01:55
  • Pessoal fiquei ausente nesses dias, vou fazer um teste.

    obrigado.

    quinta-feira, 18 de julho de 2013 14:33
  • deu certo obrigado
    segunda-feira, 22 de julho de 2013 17:29