C# 动态访问表单元素

C# 动态访问表单元素,c#,winforms,reflection,C#,Winforms,Reflection,在winforms应用程序中,我动态创建表单元素(Radiobutton、Label等)。我需要使用name属性访问特定的表单元素。一个简单的解决方案是使用Form1.Control迭代每个表单元素并检查其name属性。但在我看来,这种解决办法是无效的。是否可以使用反射访问特定的表单元素?如果可以访问控件集合,则可以使用提供的Find()方法 myForm.Controls.Find("ControlName",true); 如果你知道它的类型-你也可以铸造它 TextBox t = (Tex

在winforms应用程序中,我动态创建表单元素(Radiobutton、Label等)。我需要使用name属性访问特定的表单元素。一个简单的解决方案是使用Form1.Control迭代每个表单元素并检查其name属性。但在我看来,这种解决办法是无效的。是否可以使用反射访问特定的表单元素?

如果可以访问控件集合,则可以使用提供的Find()方法

myForm.Controls.Find("ControlName",true);
如果你知道它的类型-你也可以铸造它

TextBox t = (TextBox)myForm.controls.Find("txtFirstName",false);

true或false将指示函数搜索任何子控件

如果您有权访问控件集合,则可以使用提供的Find()方法

myForm.Controls.Find("ControlName",true);
如果你知道它的类型-你也可以铸造它

TextBox t = (TextBox)myForm.controls.Find("txtFirstName",false);

true或false将指示函数搜索任何子控件

您能给出一个论点吗?为什么您认为迭代子对象不如反射有效?如果您使用.Net4,则会出现控件索引器超载:form1.Controls[“ControlName”]您能给出一个论点吗?为什么您认为迭代子对象不如反射有效?如果您使用.Net4,则会出现控件索引器超载:form1.Controls[“ControlName”]