我遇到了问题而没有正确的搜索关键字,我找不到任何有用的内容。
在我的表单中,控件属性有:TextBoxes,Buttons,CheckBoxes和ListBox。它们位于面板上(default_panel)。还有另一个名为:link_panel的小组。我认为值得记住。
因此,当我点击菜单按钮时,Show ***()会运行,首先隐藏所有控件。
Form1 hd = (Form1)Application.OpenForms["form1"];
foreach (Control c in hd.Controls)
{
c.Visible = false;
}
然后这个Show ***()开始启用(显示)所需的控件。
hd.box1.Visible = true;
hd.box2.Visible = true;
hd.label1.Visible = true;
hd.label1.Text = "Sample Text";
当我只需要另一个Show ***()中的box1时,问题就出现了。 box2不会变得隐形。如果我尝试这样做:
TextBox tb = c as TextBox;
tb.Visible = false;
这附带NullReferenceExecption(我知道这意味着什么)。但是当我做的很简单时,第一个代码运行没有任何问题(只有这个小bug)。
面板中有许多控件可以处理separetly。
因此更准确:
有两个标签"已启用"在小组讨论。
public void ShowCharacterTable()
{
Form1 hd = (Form1)Application.OpenForms["form1"];
foreach (Control c in hd.Controls)
{
c.Visible = false;
}
hd.label1.Visible = true;
hd.label2.Visible = true;
这里有一个示例方法。
应该只有一个,但它们都是可见的。
public void ShowRelationTable()
{
Form1 hd = (Form1)Application.OpenForms["form1"];
foreach (Control c in hd.Controls)
{
if (c is TextBox)
{
c.Visible = false;
}
}
hd.label1.Visible = true;
}
Ps。:如果我没记错的话,在添加面板之前就已经开始了。
答案 0 :(得分:0)
是hd.default_panel.Controls。
Form1 hd = (Form1)Application.OpenForms["form1"];
foreach (Control c in hd.panel_default.Controls)
{
c.Visible = false;
}