我正在开发一个在运行时从XML文件添加对象(基本上是Windows Forms控件)的应用程序。应用程序需要访问已添加的对象。这些对象将添加到面板或组框中。对于面板和组框,我具有Panel.Controls [“ object_name”]访问对象。仅当将对象直接添加到同一面板上时,这才有用。在我的情况下,主面板[pnlMain,我只能访问此面板]可能包含另一个面板,并且该面板[pnlChild]再次包含一个groupbox [gbPnlChild],而该groupbox包含一个按钮[button1,我想访问此按钮] 。我有以下方法:Panel childPanel = pnlMain.Controls["pnlChild"];GroupBox childGP = childPanel.Controls["gbPnlChild"];Button buttonToAccess = childGP["button1"];当认识父母时,上述方法很有用。在我的场景中,仅知道要访问的对象的名称[button1],而不是其父对象。那么,如何通过其名称访问此对象,而与它的父级无关?是否有类似GetObject(“ objName”)之类的方法?
3 回答
饮歌长啸
TA贡献1951条经验 获得超3个赞
您可以使用表单的Controls.Find()方法来检索引用:
var matches = this.Controls.Find("button2", true);
注意,这返回一个数组,控件的Name属性可能是模棱两可的,没有机制可以确保控件具有唯一的名称。您必须自己强制执行。
ABOUTYOU
TA贡献1812条经验 获得超5个赞
TextBox txtAmnt = (TextBox)this.Controls.Find("txtAmnt" + (i + 1), false).FirstOrDefault();
当您知道自己在寻找什么时,此方法有效。
- 3 回答
- 0 关注
- 1144 浏览
添加回答
举报
0/150
提交
取消