.NET ссылки на аналогичные элементы управления - PullRequest
1 голос
/ 01 февраля 2010

У меня есть несколько элементов управления toolstrip в моем приложении, и я искал способ скрыть их все сразу.

* 1003 Е.Г. *

allToolStrips.Visible = false;

вместо

toolstrip1.Visible = false;
toolstrip2.Visible = false;
...
toolstripn.Visible = false;

Я использую C #, если это имеет значение.

Ответы [ 4 ]

5 голосов
/ 01 февраля 2010

легкий

foreach(Control ctrl in this.Controls)
{           
         if(ctrl.GetType() ==typeof(ToolStrip))

         ctrl.Visible=false;    

}
2 голосов
/ 01 февраля 2010

Поместить их в вектор, а затем спрятать их в a для каждого цикла?

1 голос
/ 01 февраля 2010

Вы можете сделать это, используя linq. Как то так.

this.Controls.Select(c => c is ToolStrip).ToList().ForEach(ts => ts.Visible = false);

Я не проверял синтаксис, но думаю, что все в порядке.

0 голосов
/ 01 февраля 2010

В дополнение к ответам других, рассмотрите возможность его кодирования, чтобы тот же код можно было использовать, чтобы перевернуть элементы управления, чтобы они снова стали видимыми, если вы их переключаете, чтобы у вас не было дублированного кода:

void SetMenusVisibility(bool visible)
{
    //credit to Vivek for his loop
    foreach(Control ctrl in this.Controls)
    {           
             if(ctrl.GetType() ==typeof(ToolStrip))

             ctrl.Visible=visible;    

    }
}
...