为了账号安全,请及时绑定邮箱和手机立即绑定

在Windows窗体中按名称查找控件

在Windows窗体中按名称查找控件

C#
Smart猫小萌 2019-11-20 11:01:37
我正在开发一个在运行时从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属性可能是模棱两可的,没有机制可以确保控件具有唯一的名称。您必须自己强制执行。


查看完整回答
反对 回复 2019-11-20
?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

 TextBox txtAmnt = (TextBox)this.Controls.Find("txtAmnt" + (i + 1), false).FirstOrDefault();

当您知道自己在寻找什么时,此方法有效。


查看完整回答
反对 回复 2019-11-20
  • 3 回答
  • 0 关注
  • 1144 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信