none
Como limpar apenas os componentes textbox que estão dento de um panel - C# RRS feed

  • Pergunta

  • Bom Dia

    tenho um panel com mais de 20 texbox
    porem preciso limpar apenas os 20 que estão dentro do panel isso é possível?
    der de já agradeço pela atenção de todos

    quarta-feira, 22 de junho de 2016 14:00

Respostas

  • Bom dia Rhael,

    segue o exemplo:

    foreach (Control item in this.panel1.Controls)
                {
                    if (item is TextBox)
                        ((TextBox)item).Clear();
                }
    Abraços.

    • Marcado como Resposta Rhael_Andrade quarta-feira, 22 de junho de 2016 14:48
    quarta-feira, 22 de junho de 2016 14:19
  • Rhael,

    Para encontrar todos os controles de um tipo específico, você pode utilizar a função abaixo:

    public IEnumerable<Control> GetAll(Control control, Type type)
            {
                var controls = control.Controls.Cast<Control>();
    
                return controls.SelectMany(ctrl => GetAll(ctrl, type))
                                          .Concat(controls)
                                          .Where(c => c.GetType() == type);
            }

    E para encontrar todos os TextBox de um painel, você pode utilizar a seguinte rotina:

    Panel panel = Application.OpenForms["Form1"].Controls["panel1"] as Panel;
    
    
                var controls = GetAll(panel, typeof(TextBox));
    
                controls.ToList().ForEach(f=>
                {
                    TextBox textBox = f as TextBox;
    
                    textBox.Text = string.Empty;
                });


    Att,
    Leandro

    Se foi útil, marque como útil ou como resposta.

    • Marcado como Resposta Rhael_Andrade quarta-feira, 22 de junho de 2016 14:48
    quarta-feira, 22 de junho de 2016 14:18

Todas as Respostas

  • Rhael,

    Para encontrar todos os controles de um tipo específico, você pode utilizar a função abaixo:

    public IEnumerable<Control> GetAll(Control control, Type type)
            {
                var controls = control.Controls.Cast<Control>();
    
                return controls.SelectMany(ctrl => GetAll(ctrl, type))
                                          .Concat(controls)
                                          .Where(c => c.GetType() == type);
            }

    E para encontrar todos os TextBox de um painel, você pode utilizar a seguinte rotina:

    Panel panel = Application.OpenForms["Form1"].Controls["panel1"] as Panel;
    
    
                var controls = GetAll(panel, typeof(TextBox));
    
                controls.ToList().ForEach(f=>
                {
                    TextBox textBox = f as TextBox;
    
                    textBox.Text = string.Empty;
                });


    Att,
    Leandro

    Se foi útil, marque como útil ou como resposta.

    • Marcado como Resposta Rhael_Andrade quarta-feira, 22 de junho de 2016 14:48
    quarta-feira, 22 de junho de 2016 14:18
  • Bom dia Rhael,

    segue o exemplo:

    foreach (Control item in this.panel1.Controls)
                {
                    if (item is TextBox)
                        ((TextBox)item).Clear();
                }
    Abraços.

    • Marcado como Resposta Rhael_Andrade quarta-feira, 22 de junho de 2016 14:48
    quarta-feira, 22 de junho de 2016 14:19