2010-02-01 2 views
1

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

E.g.

allToolStrips.Visible = false; 

вместо

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

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

ответ

5

легко один

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

     ctrl.Visible=false;  

} 
1

Вы можете сделать это с помощью linq. Что-то вроде этого.

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

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

+0

Я не очень хорошо в LINQ, но это '.ToList() ForEach()' выглядит немного неловко и я существует лучший способ, чтобы изменить свойства всех элементов. в пределах перечисления. – Oliver

2

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

0

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

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

      ctrl.Visible=visible;  

    } 
} 
Смежные вопросы