通过组合框循环并使用反射引用项
本文关键字:反射 引用 组合 循环 | 更新日期: 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 });