C#:控件的可见性
本文关键字:可见性 控件 | 更新日期: 2023-09-27 18:24:38
我遇到了一个问题,如果没有合适的搜索关键字,我找不到任何有用的东西。
在我的表单控件属性中有:文本框、按钮、复选框和列表框。它们位于面板(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";
当我在另一个节目中只需要盒子1时,问题就解决了***()。盒子2不会变成隐形的。如果我尝试做喜欢:
TextBox tb = c as TextBox;
tb.Visible = false;
它附带了NullReferenceExection(我知道这意味着什么)。但当我做第一个简单的代码时,运行起来没有任何问题(只有这个小错误)。
一个面板中有太多的控件需要单独处理。
因此,为了更准确:
面板上最多有两个标签"已启用"。
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.:如果我没记错的话,它在我添加面板之前就坏了。
它是hd.default_panel.Controls.
Form1 hd = (Form1)Application.OpenForms["form1"];
foreach (Control c in hd.panel_default.Controls)
{
c.Visible = false;
}