首先,这是一个关于使用Windows窗体的桌面应用程序的问题,而不是ASP.NET问题。我需要与其他表单上的控件进行交互。我试图通过使用,例如,以下来访问控件...otherForm.Controls["nameOfControl"].Visible = false;它不像我期望的那样工作。我最终抛出了一个例外Main。但是,如果我public而不是制作控件private,我可以直接访问它们,因为......otherForm.nameOfControl.Visible = false;但这是最好的方法吗?是否public将其他形式的控件视为“最佳实践”?是否有“更好”的方式访问另一种形式的控件?进一步说明:这实际上是我提出的另一个问题的后续问题,在C#中创建“树视图首选项对话框”类型的界面的最佳方法?。我得到的答案非常好,解决了许多很多组织问题,这些问题在保持用户界面简单易用的同时兼顾了运行时和设计时。然而,它确实提出了一个轻松控制界面其他方面的问题。基本上,我有一个根表单,它实例化了根表单中面板中的许多其他表单。因此,例如,其中一个子表单上的单选按钮可能需要更改主,根表单上的状态条图标的状态。在这种情况下,我需要子表单与父(根)表单的状态条中的控件进行通信。(我希望这是有道理的,而不是在“谁是第一个”的方式。)
3 回答
富国沪深
TA贡献1790条经验 获得超9个赞
您可以创建一个控制其可见性的属性,而不是将控件公开:
public bool ControlIsVisible
{
get { return control.Visible; }
set { control.Visible = value; }
}
这将为该控件创建一个合适的访问器,不会公开控件的整个属性集。
慕的地6264312
TA贡献1817条经验 获得超6个赞
第一个当然不起作用。表单上的控件是私有的,仅在设计时可见。
让它全部公开也不是最好的方式。
如果我想向外界揭示某些东西(也可能意味着另一种形式),我会为它制作一个公共财产。
public Boolean nameOfControlVisible
{
get { return this.nameOfControl.Visible; }
set { this.nameOfControl.Visible = value; }
}
您可以使用此公共属性隐藏或显示控件或询问控件当前可见性属性:
otherForm.nameOfControlVisible = true;
您还可以公开完整控件,但我认为它太多了,您应该只在当前表单之外显示您真正想要使用的属性。
public ControlType nameOfControlP
{
get { return this.nameOfControl; }
set { this.nameOfControl = value; }
}
- 3 回答
- 0 关注
- 650 浏览
添加回答
举报
0/150
提交
取消