アプリケーションに複数のツールストリップコントロールがあり、それらすべてを一度に非表示にする方法を探していました。
例えば
allToolStrips.Visible = false;
それ以外の
toolstrip1.Visible = false;
toolstrip2.Visible = false;
...
toolstripn.Visible = false;
重要な場合はC#を使用しています。
簡単なもの
foreach(Control ctrl in this.Controls)
{
if(ctrl.GetType() ==typeof(ToolStrip))
ctrl.Visible=false;
}
それらをベクトルに入れてから、for each ループで非表示にしますか?
linq を使用して実行できます。このようなもの。
this.Controls.Select(c => c is ToolStrip).ToList().ForEach(ts => ts.Visible = false);
構文は確認していませんが、問題ないと思います。
他の人の回答に加えて、同じコードを使用して、コントロールを切り替えている場合にコントロールを再び表示できるようにコーディングすることを検討してください。これにより、コードが重複しなくなります。
void SetMenusVisibility(bool visible)
{
//credit to Vivek for his loop
foreach(Control ctrl in this.Controls)
{
if(ctrl.GetType() ==typeof(ToolStrip))
ctrl.Visible=visible;
}
}