Loop para validação de controles Texbox em C sharp wpf

16/05/2015

Boa Noite!

Pessoal estou com um problema, tenho um Formulário WPF em C# que possui varias Texbox's, preciso criar um Loop para verificar se todos os elementos textbox estão preenchidos e se não mostrar uma mensagem para o usuário informando a textbox vazia, vi vários exemplos na internet mas na minha aplicação não funcionou, sei que isso pode ser ser feito por meio de uma coição "if" encadeada, mas queria fazer por meio de loop pois ficaria mais organizado e com um código mais, alguém sabe como posso fazer isso?

Esse foi um dos melhores exemplo que consegui não funcionou:
private void prcVerificarCampos()
        {
            foreach (Control c in this.Controls)
            {
                if (c is TextBox  & string.IsNullOrEmpty(c.Text))
                {
                    MessageBox.Show("Favor Preencha o Campo " + c.Name);
                    c.Select();
                    return;
                }
            }
        }




Conto com ajuda de vcs, e desde já meu muito obrigado!

Moisés

Melhor resposta

04/07/2015

Analisei novamente sua pergunta e reparei que a resposta que lhe dei é muito deselegante, então concertei esse código que mostrastes.

// O método não retorna nenhum valor, pois só queremos exibir uma MessageBox com os dados não preenchidos.
private void pcrVerificarCampos ()
{
    // String que representará todos os campos em branco.
    string campos = "";
    foreach (Control controle in this.Controls)
    {
        // Coloquei para também aceitar RichTextBox, por isso se lembre dos parênteses, sem eles só será analisado os RichTextBox.
        if ((controle is TextBox || controle is RichTextBox) && string.IsNullOrEmpty(controle.Text))
        {
            // Aqui será adicionado o nome da entrada em branco e a vírgula.
            campos += controle.Name + ", ";
        }
    }
    // Modificadores da mensagem que será mostrada para o usuário.
    campos = campos.Substring(0, campos.Length - 2);
    int x = campos.LastIndexOf(',');
    campos = campos.Remove(x, 1);
    campos = campos.Insert(x, " e");

    // E finalmente a MessageBox é exibida para o usuário.
    MessageBox.Show(string.Format("Por favor preencha o(s) campo(s) .", campos));
    // Recomendo que use string.Format ao invés de usar +, pois assim seu programa rodará mais fluidamente.
}


E só, espero ter ajudado.

Jaedson Serafim

Responder Citar

Outras Respostas

27/05/2015

Moisés

Pessoal por favor me ajudem ainda não consegui solucionar este caso, conto com a ajuda de vcs!
Responder Citar

25/06/2015

Jaedson Serafim

Já pensasse em fazer um arrey de textBox que pode ser percorrido por um foreach, verificando o texto de cada um no loop.
Responder Citar

01/07/2015

Moisés

Já pensasse em fazer um arrey de textBox que pode ser percorrido por um foreach, verificando o texto de cada um no loop.



Jaedson Barbosa Serafim, não tinha pensado nisso até pq não sei fazer isso, vc poderia me mostrar um EX?
Responder Citar

20/10/2015

Moisés

Valeu Cara, muito obrigado.
Responder Citar

09/11/2017

Márcio Silva

Analisei novamente sua pergunta e reparei que a resposta que lhe dei é muito deselegante, então concertei esse código que mostrastes.
// O método não retorna nenhum valor, pois só queremos exibir uma MessageBox com os dados não preenchidos.
private void pcrVerificarCampos ()
{
    // String que representará todos os campos em branco.
    string campos = "";
    foreach (Control controle in this.Controls)
    {
        // Coloquei para também aceitar RichTextBox, por isso se lembre dos parênteses, sem eles só será analisado os RichTextBox.
        if ((controle is TextBox || controle is RichTextBox) && string.IsNullOrEmpty(controle.Text))
        {
            // Aqui será adicionado o nome da entrada em branco e a vírgula.
            campos += controle.Name + ", ";
        }
    }
    // Modificadores da mensagem que será mostrada para o usuário.
    campos = campos.Substring(0, campos.Length - 2);
    int x = campos.LastIndexOf(',');
    campos = campos.Remove(x, 1);
    campos = campos.Insert(x, " e");

    // E finalmente a MessageBox é exibida para o usuário.
    MessageBox.Show(string.Format("Por favor preencha o(s) campo(s) .", campos));
    // Recomendo que use string.Format ao invés de usar +, pois assim seu programa rodará mais fluidamente.
}
E só, espero ter ajudado.


Jaedson Serafim,

Eu tentei implementar esse método, porém ocorre o erro quando cai em:

campos = campos.Substring(0, campos.Length - 2);

A mensagem diz que o valor não pode ser menor que 0
Responder Citar