C#隐藏所有标签/控件

时间:2015-07-05 18:21:59

标签: c# winforms visual-studio-2012

使用C#在Windows窗体中是否可以在表单加载时隐藏所有特定控件,例如标签或按钮,然后选择显示我不想显示的那些?

我有一个程序,其中包含很多按钮和标签,但我只想在加载时显示一个或两个,我觉得为每个标签做label1.Hide();的这种方法看起来效率不高但是我可以只显示我想要的标签。也许使用循环,如下所示:

foreach (Label)
{
    this.Hide();
}

3 个答案:

答案 0 :(得分:4)

听起来你可以将它们全部隐藏在设计器中,然后你就不必在运行时处理它们了。

如果你必须在运行时隐藏它们,那么你可以使用一点LINQ获取某个类型的Form上的所有控件:

foreach (var lbl in Controls.OfType<Label>())
    lbl.Hide();

您甚至可以根据名称过滤控件,因此您只能隐藏要隐藏的控件:

foreach (var lbl in Controls.OfType<Label>().Where(x => x.Name != "lblAlwaysShow"))
    lbl.Hide();

如果他们还隐藏在其他控件中,例如Panels或GroupBoxes,那么你也必须遍历他们的ControlCollections:

foreach (var lbl in panel1.Controls.OfType<Label>())
    lbl.Hide();

foreach (var lbl in groupBox1.Controls.OfType<Label>())
    lbl.Hide();

答案 1 :(得分:1)

您可以使用更少的代码尝试此操作。它可以工作另一个表单控件(等文本框,按钮...)

foreach (Control lbl in Controls)
{
 if ((lbl) is Label)
 {
  lbl.Hide();
 }
}

答案 2 :(得分:0)

试试这个:

 foreach(Label l in this.Controls.OfType<Label>())
 {
    l.Visible=false;
 }

 this.myControl.Visible=true;