Limpar todos os textBox de uma vez em C#

Olá leitor,

Abaixo está um método simples que serve para zerar todos os textBox de seu formulário de uma única vez. Em casos onde há poucos controles para limpar o conteúdo o bom e velho textBox1.Text = String.Empty ainda pode ser a melhor opção, mas imagine formulários com 20 ou até mais campos. O código ficaria bem feio, não?




Ao invés de limpar um por um, a partir de agora você pode usar este método:


private void limparTextBoxes(Control.ControlCollection controles)
{
    //Faz um laço para todos os controles passados no parâmetro
    foreach (Control ctrl in controles)
    {
        //Se o contorle for um TextBox...
        if (ctrl is TextBox)
        {
            ((TextBox)(ctrl)).Text = String.Empty;
        }
    }
}



E para chamar o método basta usar o seguinte comando no evento desejado:

limparTextBoxes(this.Controls);


Por hoje é só. Espero que ajude.

[]'s

16 comentários:

  1. como fica essa parte se fosse um Picture Box???
    ((TextBox)(ctrl)).Text = String.Empty;

    ResponderExcluir
    Respostas
    1. Oi Guilherme, neste caso você também precisará mudar a condição IF. Ficará assim:
      if (ctrl is PictureBox)
      {
      ((PictureBox)(ctrl)).Image = null;
      }

      Abraço

      Excluir
  2. João Paulo, boa tarde!
    Muito bom seu código, porém eu criei uma classe copiei e colei seu código, mais o Control.ControlCollection, esta dando erro, preciso usar alguma biblioteca específica?

    ResponderExcluir
    Respostas
    1. Oi Flavio, Você precisa da System.Windows.Forms.

      Da próxima vez que ocorrer erros de bibliotecas faltantes, se estiver no Visual Studio ele mesmo te ajuda. Basta clicar com o botão direito sobre o erro e ir na opção "Resolve". Lá estão as possíveis bibliotecas que contém a classe que está tentando utilizar.

      Abraço!

      Excluir
  3. OK, preciso só de mais uma ajuda se possível:
    Criei uma classe LimpaTextbox, coloquei seu código nela e no formulário chamei assim:
    limparTextBoxes(this.Controls);
    Esta dando erro tentei colocar :
    LimpaTextbox. limparTextBoxes(this.Controls);
    Ainda da erro pode me ajudar?
    Desde já agradeço

    ResponderExcluir
    Respostas
    1. Oi Flavio, deveria funcionar. Você mudou a visibilidade do método de private para public, assim como a própria classe criada?

      Excluir
    2. Muito obrigado, consegui, alterei para public conforme informado e fiz o seguinte:

      LimpaTextbox limpa = new LimpaTextbox();
      limpa.limparTextBoxes(this.Controls);

      Valeu pela força.

      Excluir
  4. joão paulo ola espero que ainda esteja ativo.. usei seu exemplo dentro de um form ... estou usado mdb como base... notei que se eu fizer um form novo ... ele funciona muito bem... mas nos form que ja questa ancorados a base... nao rola...

    ResponderExcluir
  5. Ola muito bom esse procedimento
    mais eu tenho uma duvida como podem ver a baixo o procedimento esta em uma classe. chamada: public class ClassProcedimentos como eu chamo esse mesmo procedimento no meu Windows.Forms;


    public class ClassProcedimentos
    {
    private void LimparTextBoxes(Control.ControlCollection controles)
    {
    //Faz um laço para todos os controles passados no parâmetro
    foreach (Control ctrl in controles)
    {
    //Se o contorle for um TextBox...
    if (ctrl is TextBox)
    {
    ((TextBox)(ctrl)).Text = String.Empty;
    }
    }
    }
    }

    ResponderExcluir
    Respostas
    1. Se quiser usar o método LimparTextBoxes fora da sua classe ClassProcedimentos você tem que trocar o modificador de acesso dele de private para public.

      Depois é só instanciar sua classe e chamar o método normalmente usando o objeto criado.

      Excluir
    2. Este comentário foi removido pelo autor.

      Excluir
    3. Ola joão muito obrigado conseguir
      funcionou
      valeu mesmo

      Excluir
  6. Como limpar os campos que estão dentro de um groupbox?

    ResponderExcluir
  7. Bom dia João, tentei utilizar esse seu método, entendi o conceito, porem não to sabendo chamar o método para utilizar em um groupbox especifico.
    exemplo: tenho 3 formularios e cada formulario esta contido em um groupbox diferente, preciso que quando eu chame o seu metodo sugerido, apague somente o formulario do groupbox pretendido. tem como vc me explicar como faço?

    ResponderExcluir
  8. Cara, você não explicou como usá-la de fato, estou perdido! Eu consegui usá-la como uma função dentro de um botão, por exemplo: Criei um botão como o nome limpar dados, e no evento de clique, colei isso:

    void limparTextBoxes(Control.ControlCollection controles)
    {
    //Faz um laço para todos os controles passados no parâmetro
    foreach (Control ctrl in controles)
    {
    //Se o contorle for um TextBox...
    if (ctrl is TextBox)
    {
    ((TextBox)(ctrl)).Text = String.Empty;
    }
    }
    }

    limparTextBoxes(this.Controls);

    como se fosse uma função. OBS: using System.Windows.Forms; declarada no primeiro formulário em Form1.cs.

    ResponderExcluir

Não esqueça de enviar um comentário. Isto motiva o autor a continuar postando e também é uma forma de agradecimento