C# 隐藏所有标签/控件

Joh*_*ohn 2 c# winforms visual-studio-2012

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

我有一个包含很多按钮和标签的程序,但我只想在加载时显示一两个,我觉得label1.Hide();为每个标签执行这种方法似乎效率低下,但我可以在需要时显示我想要的标签。也许使用循环,像这样:

foreach (Label)
{
    this.Hide();
}
Run Code Online (Sandbox Code Playgroud)

Gra*_*ICA 5

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

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

foreach (var lbl in Controls.OfType<Label>())
    lbl.Hide();
Run Code Online (Sandbox Code Playgroud)

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

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

如果它们也隐藏在其他控件中,例如 Panels 或 GroupBoxes,则您也必须遍历它们的 ControlCollections:

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

foreach (var lbl in groupBox1.Controls.OfType<Label>())
    lbl.Hide();
Run Code Online (Sandbox Code Playgroud)