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

.NET

Front-end

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

Moisés

Curtidas 0

Melhor post

Jaedson Serafim

Jaedson Serafim

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.
GOSTEI 1

Mais Respostas

Moisés

Moisés

16/05/2015

Pessoal por favor me ajudem ainda não consegui solucionar este caso, conto com a ajuda de vcs!
GOSTEI 0
Jaedson Serafim

Jaedson Serafim

16/05/2015

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

Moisés

16/05/2015

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?
GOSTEI 0
Moisés

Moisés

16/05/2015

Valeu Cara, muito obrigado.
GOSTEI 0
Márcio Silva

Márcio Silva

16/05/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,

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
GOSTEI 0
POSTAR