通过组合框循环并使用反射引用项

本文关键字:反射 引用 组合 循环 | 更新日期: 2023-09-27 18:22:39

我有一些自定义控件:

1) 1用于字符串输入(文本框)

2) 1用于多个字符串输入(组合框)

3) 1用于整数输入

页面1进行一些处理,根据用户输入,任何数量的控件都可以按任何顺序添加到页面2。由于上面控件的添加以及它们的排序是完全动态的,我不得不使用refelection来参考自定义控件:

例如,如果我想引用上面某个控件中的属性(例如"Value"),我会使用以下

c.GetType().GetProperty("Value")

我的问题如下:

我需要访问包含组合框的控件中的。通常我会做一些类似的事情:

foreach(string item in ComboBox1.items){}

当通过反射引用控件时,这似乎有点棘手。。。。有什么想法吗?

注意:如果可能的话,我想继续使用反射。。。。

通过组合框循环并使用反射引用项

您想要获得对象的Items属性,因此使用GetProperty反射方法。下面是一个动态获取属性信息的好例子,然后是一个设置值的例子。

您可以尝试

foreach (var cntrl in Page2.Controls.OfType<ComboBox>())
{
     //
}

要获得属性,您可以执行以下操作,但不确定这是否是您正在尝试。

PropertyInfo prop  = controlType.GetProperty(propertyName);// Gets Items
MethodInfo methInfo = prop.PropertyType.GetMethod(methodName); // gets the method ('Items.Add')
object obj      = prop.GetValue(newControl, null);         // gets the current 'Items
methInfo.Invoke(prop.GetValue(newControl, null), new object[] { newValue });