none
Tornar invisível somente elementos de dentro de um Panel RRS feed

  • Pergunta

  • Olá pessoal, como faço para tornar invisível apenas componentes que estão dentro de um Panel, pois da forma como está, desabilita tudo que está dentro do form.

    private void Habilita_periodo(bool opcao)
    {
             foreach (Control c in this.Controls)
            {
                if (c.Name.Contains("dtp") || c.Name.Contains("lbl"))
                {
                    c.Visible = opcao;
                }
            }
            pnlperiodo.Visible = opcao;
    }

    C#, WindowsForm.


    sábado, 5 de outubro de 2019 12:49

Respostas

Todas as Respostas

  • olá,

    precisa fazer o foreach com os componetes dentro do panel, e não do form

    private void Habilita_periodo(bool opcao)
    {
             foreach (Control c in SeuPanel.Controls)
            {
                if (c.Name.Contains("dtp") || c.Name.Contains("lbl"))
                {
                    c.Visible = opcao;
                }
            }
            pnlperiodo.Visible = opcao;
    }

    terça-feira, 8 de outubro de 2019 11:50
    Moderador
  • Olá welington,

    Dentro do panel, tem várias lbl e vários dtp, alterei para a forma que você passou, mas não estou entendendo porque ele está processando apenas um componente e está saindo fora loop do foreach.

    Obrigado.

    quarta-feira, 9 de outubro de 2019 11:25
  • mais ai o problema talvez seja no  if?
    quarta-feira, 9 de outubro de 2019 11:35
    Moderador
  • Mesmo tirando o if, processa apenas uma vez, a rotina não está considerando os outros elementos dentro do panel.

    private void Habilita_periodo(bool opcao)
    {
         foreach (Control c in pnlperiodo.Controls)
         {
               c.Visible = opcao;
          }
    }

    quarta-feira, 9 de outubro de 2019 11:56
  • Olá welington

    Consegui resolver criando o componente novamente e arrastando para dentro do panel, obrigado por sua atenção.

    quarta-feira, 9 de outubro de 2019 16:00