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

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

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

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

对于Winforms,试试这个:

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

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

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

例如

 button1.visible = true; 

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

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

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

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

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

就像是

 foreach (var controlObj in form.Controls) ((Control)controlObj).Visible = True; 

应该做的伎俩。 这只是显示表单中的所有控件。 (请注意, Form.Controls是一个只包含Object的非类型化Collection,所以你必须将它们转换为afair)

如果你只有5个控件,你也可以单独显示它们,也许用类似的方法

 void showHiddenControls(bool show) { control1.Visible = show; control2.Visible = show; // ... } 

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

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

 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调用。 当然,如果您有多个对象要显示或消失,请在此function中对所有人执行相同操作。