在C#窗体窗口中,假设我有5个控件。我只是隐藏了其中一些。当我运行程序时,应该出现(Visible = true)控件。我想点击一个按钮来显示或取消隐藏所有控件。我怎么能这样做?
答案 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调用。当然,如果您有多个要显示或消失的对象,请在此功能中对所有人执行相同操作。