从 Windows 窗体控件中按名称查找控件
Posted
技术标签:
【中文标题】从 Windows 窗体控件中按名称查找控件【英文标题】:Find control by name from Windows Forms controls 【发布时间】:2011-04-23 08:26:47 【问题描述】:我有一个文本框名称列表,我想按名称查找控件。怎么可能?
【问题讨论】:
【参考方案1】:使用Control.ControlCollection.Find。
TextBox tbx = this.Controls.Find("textBox1", true).FirstOrDefault() as TextBox;
tbx.Text = "found!";
为提问者编辑:
Control[] tbxs = this.Controls.Find(txtbox_and_message[0,0], true);
if (tbxs != null && tbxs.Length > 0)
tbxs[0].Text = "Found!";
【讨论】:
TextBox tBox = this.Controls.Find(txtbox_and_message[0, 0], true).FirstOrDefault() as TextBox;好吗? 出现此错误.. .net framework 2.0.. 'System.Array' 不包含'FirstOrDefault' 的定义,并且没有扩展方法'FirstOrDefault' 接受'System.Array' 类型的第一个参数' 可以找到(您是否缺少 using 指令或程序集引用?) 您是否在运行时动态地将文本框添加到表单中?如果是这种情况,您可以为每个文本框分配一个唯一名称,并使用 controls.find 查找具有唯一名称的文本框。 TextBox foundTbx = this.Controls.Find(textBoxes[5], true)[0] as TextBox; 将 .FirstOrDefault() 更改为 [0]【参考方案2】:你可以使用:
f.Controls[name];
f
是您的表单变量。这为您提供了名称为 name
的控件。
【讨论】:
请注意,如果控件是嵌套的,这将不起作用(您只会在控件层次结构中找到该级别的控件)。 我尝试的例子是:Button btn = f.Controls["name"] as Button;【参考方案3】:TextBox tbx = this.Controls.Find("textBox1", true).FirstOrDefault() as TextBox;
tbx.Text = "found!";
如果 Controls.Find 没有找到 "textBox1" => 错误。您必须添加代码。
If(tbx != null)
编辑:
TextBox tbx = this.Controls.Find("textBox1", true).FirstOrDefault() as TextBox;
If(tbx != null)
tbx.Text = "found!";
【讨论】:
以上是关于从 Windows 窗体控件中按名称查找控件的主要内容,如果未能解决你的问题,请参考以下文章