如何在C#中显示Form的所有隐藏控件?

时间:2011-12-22 07:50:03

标签: c# winforms

在C#窗体窗口中,假设我有5个控件。我只是隐藏了其中一些。当我运行程序时,应该出现(Visible = true)控件。我想点击一个按钮来显示或取消隐藏所有控件。我怎么能这样做?

6 个答案:

答案 0 :(得分:4)

对于Winforms,试试这个:

foreach (Control c in Controls) {
    c.Visible = true;
}

此代码循环遍历表单上的所有控件,并将Visible属性设置为true,以使每个控件都可见。

答案 1 :(得分:2)

您需要更改后面代码中的可见属性。

e.g。

button1.visible = true;

并为每个隐藏的控件,按钮执行此操作。

只是添加我怀疑你会想要循环通过其他人建议的所有控件。更改表单上所有内容的可见性是浪费时间,如果在不同场景中仅显示某些控件,则可能会导致轨道复杂化。

由于它只有5个控件,我会坚持改变每个控件。

答案 2 :(得分:2)

你可以让它递归,然后如果你有任何面板/组框,他们的孩子也可以看到。

public void MakeVisible(Control control)
{
    if(control.HasChildren)
    {
        foreach (Control child in control.Controls)
        {
            MakeVisible(child);
        }
    }
    control.Visible = true;
}

答案 3 :(得分:1)

如果你想隐藏/展示一切,

    foreach (Control cr in this.Controls)
        cr.Visible = false; // or true, if you want to show everything

答案 4 :(得分:1)

这样的东西
foreach (var controlObj in form.Controls)
    ((Control)controlObj).Visible = True;

应该做的伎俩。这只是在表单中显示所有控件。 (请注意,Form.Controls是一个只包含Object s的无类型集合,因此您必须将它们转换为空格。

如果你只有5个控件,你也可以单独显示它们,也许是用

这样的方法
void showHiddenControls(bool show) {
  control1.Visible = show;
  control2.Visible = show;
  // ...
}

这样做的好处是,您可以使用showHiddenControls(true)显示它们,并使用showHiddenControls(false)再次隐藏它们。

答案 5 :(得分:0)

主要的想法是创建这样的对象:

Label toto = new Label():
(...) Do whatever you wan't to initialize your object
toto.Visible = false;

Button makeItAppear = new Button();
(..) Do whatever you wan't to initialize this button

然后在click事件上添加一个处理程序:

makeItAppear.Click += new System.EventHandler(MakeItAppear);

然后在eventHandler中:

private void MakeItAppear(object sender, EventArgs e)
{
    this.toto.Visible = true;
}

最好的方法是创建一个使其出现的函数,并由Handler调用。当然,如果您有多个要显示或消失的对象,请在此功能中对所有人执行相同操作。