如何访问C#中动态创建的文本框,该文本框的名称以字符串形式提供?
我有一个动态创建的(运行时创建)文本框,其名称可以作为字符串使用。我想做的是像访问普通文本框一样访问此文本框。有人能告诉我如何将其转换为文本框或任何其他解决方案吗如果您知道文本框及其父控件的名称,您可以这样做:如何访问C#中动态创建的文本框,该文本框的名称以字符串形式提供?,c#,winforms,dynamic,textbox,runtime,C#,Winforms,Dynamic,Textbox,Runtime,我有一个动态创建的(运行时创建)文本框,其名称可以作为字符串使用。我想做的是像访问普通文本框一样访问此文本框。有人能告诉我如何将其转换为文本框或任何其他解决方案吗如果您知道文本框及其父控件的名称,您可以这样做: TextBox tb = (TextBox )parent.Controls["name"]; 除了Iordan的答案之外,如果您不知道文本框在表单上的确切位置,那么这个扩展方法应该会有很大帮助。注意,表单也从控件继承,因此您可以从该控件或表单上的任何控件调用它 public stat
TextBox tb = (TextBox )parent.Controls["name"];
除了Iordan的答案之外,如果您不知道文本框在表单上的确切位置,那么这个扩展方法应该会有很大帮助。注意,
表单
也从控件
继承,因此您可以从该控件或表单上的任何控件调用它
public static class ExtensionMethods
{
public static Control FindControl(this Control root, string name)
{
foreach (Control c in root.Controls)
{
// Check this control
if (c.Name == name) return c;
// Check this controls subcontrols
Control tmp = c.FindControl(name);
if (tmp != null) return tmp;
}
return null;
}
}
如果这对您来说仍然不够灵活,那么您可以在
System.Windows.Forms.Application.OpenForms
上迭代,因为您似乎可以控制创建过程,所以可以在字典中引用它
TextBox txt = DynamicCreate(name);
map[name] = txt;
this.Controls.Add(txt);
您所要做的就是在字典中查找它,而不是遍历表单上的所有控件
TextBox txt=map[“name”]