Usuário com melhor resposta
C# - Verificar Vários Campos em Brancos

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 ?
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:
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
:)
- Sugerido como Resposta Levi DomingosModerator quinta-feira, 11 de julho de 2013 16:50
- Marcado como Resposta William John Adam TrindadeModerator terça-feira, 16 de julho de 2013 12:53
-
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
- Editado ROLDB sábado, 13 de julho de 2013 02:00 correção
- Sugerido como Resposta ROLDB sábado, 13 de julho de 2013 02:38
- Marcado como Resposta William John Adam TrindadeModerator terça-feira, 16 de julho de 2013 12:54
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:
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
:)
- Sugerido como Resposta Levi DomingosModerator quinta-feira, 11 de julho de 2013 16:50
- Marcado como Resposta William John Adam TrindadeModerator terça-feira, 16 de julho de 2013 12:53
-
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.
- Editado felipe_louzada quinta-feira, 11 de julho de 2013 08:33 correção explicação
- Sugerido como Resposta Levi DomingosModerator quinta-feira, 11 de julho de 2013 16:50
-
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
- Editado ROLDB sábado, 13 de julho de 2013 02:00 correção
- Sugerido como Resposta ROLDB sábado, 13 de julho de 2013 02:38
- Marcado como Resposta William John Adam TrindadeModerator terça-feira, 16 de julho de 2013 12:54
-
-