[英]How to show all hidden controls of a Form in C#?
在C#窗体窗口中,说我有5个控件。 我只是藏了一些。 当我运行程序时,仅应显示(Visible = true)控件。 我想单击一个按钮以显示或取消隐藏所有控件。 我怎样才能做到这一点?
对于Winforms,请尝试以下操作:
foreach (Control c in Controls) {
c.Visible = true;
}
此代码循环遍历窗体上的所有控件,并将Visible属性设置为true,以使每个控件可见。
您将需要在后面的代码中更改可见属性。
例如
button1.visible = true;
并针对每个隐藏的控件(无论是否为按钮)执行此操作。
补充一点,我怀疑您是否想遍历其他所有人建议的所有控件。 更改表单上所有内容的可见性是在浪费时间,并且如果在不同情况下仅使某些控件可见,则可能导致复杂化。
由于只有5个控件,因此我会坚持单独更改每个控件。
您可以使其递归,然后,如果您有任何面板/组框,其子项也将变为可见。
public void MakeVisible(Control control)
{
if(control.HasChildren)
{
foreach (Control child in control.Controls)
{
MakeVisible(child);
}
}
control.Visible = true;
}
如果您想隐藏/显示所有内容,
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,因此您必须公平地对其进行转换)
如果您只有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调用的函数。 当然,如果您要使多个对象出现或消失,请对该函数执行所有操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.