如何在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中对所有人执行相同操作。