2012-02-03 26 views
0

我有一些定製控件:遍歷,組合框和引用項目使用反射

1)1字符串輸入(文本)

2)1對多個字符串輸入(組合框)

3 )1用於整數輸入

Page 1做了一些處理,根據用戶輸入,任意數量的控件都以任意順序添加到第2頁。由於添加上面的控件以及它們的排序是完全動態的,所以我必須使用refelection很普遍地引用自定義控件:

例如,如果我想引用屬性(例如, 「值」),其中一個控件內上面我用下面的

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

我的問題是這樣的:

我需要訪問項目含有組合框控件。通常我會這樣做:

foreach(string item in ComboBox1.items){} 

這似乎有點棘手,當通過反射引用控制....任何想法?

注:我想用如果可能的話....

回答

0

你想要得到的對象的Items屬性,以便使用GetProperty反射法反射保持。 Here是動態獲取屬性信息的一個很好的示例,然後here是設置值的示例。

+0

我無法使用get屬性方法。 c.GetType()。GetProperty(「ComboBox1」)。GetProperty(「Items」)是不合法的 – user559142 2012-02-03 15:59:15

0

你可以嘗試

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

爲了得到一個你可以做以下不知道這是你 正在尋找嘗試一些財產。

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 });