none
Problema ao usar comando para apagar campos RRS feed

  • Pergunta

  • Olá amigos,

    Aprendi a fazer um código para apagar campos em um Form:

    private void ApCampos()
            {
                foreach (Control ApG in this.Controls)
                {
                    if (ApG is TextBox)
                    {
                        ApG.Text = string.Empty;
                    }
                    else if (ApG is MaskedTextBox)
                    {
                        ApG.Text = string.Empty;
                    }
                    else if (ApG is ComboBox)
                    {
                        ApG.Text = string.Empty;
                    }
                }
             }

    Porém, ele não apaga os campos que estão dentro de um GroupBox. Como posso implementar isso no código?



    • Editado nelsonmgj domingo, 3 de janeiro de 2021 20:44
    domingo, 3 de janeiro de 2021 20:42

Todas as Respostas

  •  

    Não seria ?

    private void ApCampos()
            {
                foreach (Control ApG in this.Controls)
                {
                    if (ApG is TextBox)
                    {
                        ApG.Text = string.Empty;
                    }
                    else if (ApG is MaskedTextBox)
                    {
                        ApG.Text = string.Empty;
                    }
                    else if (ApG is ComboBox)
                    {
                        ApG.Text = string.Empty;
                    }

     else if (ApG is GroupBox)
                    {
                        ApG.Text = string.Empty;
                    }
                }
             }

    segunda-feira, 4 de janeiro de 2021 00:31
  • NelsonMGJ,

        Respondendo rapidamente... Acho que é só colocar mais um "IF"... talvez você possa usar RECURSIVIDADE para ficar melhor... 

    if(gb is GroupBox)
    {
       foreach(Control tb in this.Controls)
       {
          if(tb is TextBox)
          {
             tb.Text = string.Empty;
          }
       }
    }

       Veja também:

    ================================================
    Using a foreach loop to retrieve TextBox's within a GroupBox

    https://stackoverflow.com/questions/8224261/using-a-foreach-loop-to-retrieve-textboxs-within-a-groupbox
    ================================================
    Looping through form controls belonging to groupboxes RRS feed

    https://social.msdn.microsoft.com/Forums/vstudio/en-US/f5e1fd16-7fbf-47a8-a86e-264f72517f05/looping-through-form-controls-belonging-to-groupboxes?forum=csharpgeneral
    ================================================
    Reset All Controls in GroupBox

    https://www.c-sharpcorner.com/blogs/reset-all-controls-in-groupbox1
    ================================================

    Go through all textboxes, comboboxes,... and clear their content

    https://www.codeproject.com/Questions/737339/Go-through-all-textboxes-comboboxes-and-clear-thei
    ================================================


    []'s,
    Fabio I.

    P.S.: Por favor, se te ajudei, não esqueça de me pontuar... este é meu "salário".

    • Editado Fabio I segunda-feira, 4 de janeiro de 2021 00:40
    segunda-feira, 4 de janeiro de 2021 00:36
  • Olá Titodj7,

    Infelizmente não resolveu! Também estou estudando alguma alternativa semelhante mas sem resultado também.

    Obrigado!

    segunda-feira, 4 de janeiro de 2021 01:59
  • Olá Fabio, boa noite!

    Seu exemplo eu tentei implementar, mas não houve sucesso, porém separei um foreach como no primeiro "veja também" que você passou e funcionou.

    Obrigado!

    Ficou dessa forma:

    private void ApCampos()
            {
                foreach (Control ApG in this.Controls)
                {
                    if (ApG is TextBox)
                    {
                        ApG.Text = string.Empty;
                    }
                    else if (ApG is MaskedTextBox)
                    {
                        ApG.Text = string.Empty;
                    }
                    else if (ApG is ComboBox)
                    {
                        ApG.Text = string.Empty;
                    }
                }
                foreach (Control ApB in this.Controls)
                    if (ApB is GroupBox)
                    {
                        foreach(Control ApC in ApB.Controls)
                        {
                            if (ApC is ComboBox)
                            {
                                ApC.Text = string.Empty;
                            }
                        }
                    }
            }


    • Editado nelsonmgj segunda-feira, 4 de janeiro de 2021 02:10
    segunda-feira, 4 de janeiro de 2021 02:07
  • Nelson,

       Legal que você resolveu.
       Então... esse segundo "For Each" (foreach(Control ApC in ApB.Controls)) talvez possa ser colocado em uma rotina de recursividade.
       Copie esse código que está funcionando em algum lugar e tente modificá-lo para implementer recursividade. 
       Exemplos:

    ===================================
    EXEMPLO SOBRE RECURSIVIDADE

    Um pequeno exemplo sobre recursividade. A small example about recursion.
    'Antes de entender sobre recursividade, você precisa entender sobre recursividade'

    https://www.vbmania.com.br/index.php?modulo=detalhe&id=9517
    ===================================
    TRABALHANDO TREEVIEW COM RECURSIVIDADE

    https://www.vbmania.com.br/index.php?modulo=detalhe&id=7913
    ===================================
    Recursive methods using C#

    https://www.codeproject.com/Articles/142292/Recursive-methods-in-Csharp
    ===================================
    Recursion made simple
    The principle of practicality

    https://www.codeproject.com/Articles/32873/Recursion-made-simple
    ===================================
    How to recursively list all the files in a directory in C#?

    static void DirSearch(string sDir)
    {
        try
        {
            foreach (string d in Directory.GetDirectories(sDir))
            {
                foreach (string f in Directory.GetFiles(d))
                {
                    Console.WriteLine(f);
                }
                DirSearch(d);
            }
        }
        catch (System.Exception excpt)
        {
            Console.WriteLine(excpt.Message);
        }
    }

    https://stackoverflow.com/questions/929276/how-to-recursively-list-all-the-files-in-a-directory-in-c
    ===================================

    []'s,
    Fabio I.
    segunda-feira, 4 de janeiro de 2021 10:46
  • Fabio,

    Desculpe a demora em responder. Já consegui implementar a recursividade.

    Obrigado.

    quarta-feira, 6 de janeiro de 2021 13:30
  • Nelson,

       Fico feliz, você pode me pontuar?

    Obrigado,
    Fabio I.

    quarta-feira, 6 de janeiro de 2021 16:24