我遇到了一個我根本無法解決的問題,我一直在研究幾個小時但沒有結果。請幫忙!C#SetValue TargetException對象與目標類型不匹配
我想要做的事:
我有一個用戶控件,列出我的形式一類,我想它,如果有人選擇列表上的不同項目主窗體上的變化。
所以我創建了一個事件:
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (listBox1.SelectedIndex != -1)
{
Object item = this.List.GetType().GetProperty("Item").GetValue(this.List, new Object[] { listBox1.SelectedIndex });
Control a = this.TopLevelControl;
Object temp = a.GetType().GetProperty("currentExpression").GetValue(a, null);
a.GetType().GetProperty("currentExpression").SetValue(temp, item, null);
}
}
在此代碼 'A' 持有的主要形式。 (並且這個事件在用戶控件中運行)所以我擁有我需要的一切。
List對象是一個表達式列表。而主窗體上的currentExpression屬性是一個表達式。
我想把表達式(我稱爲item)放在屬性currentExpression(它是MainForm上的表達式)上。但它總是說「對象與目標類型不匹配」。 TargetException是未處理的
當我調試我可以看到他們都是正確的。 (temp和item)但它仍然會拋出一個異常。
編輯:
我要說的是,「列表」對象不是List<Something>
,它是要列出的對象,所以列表是一個對象(對象列表)。我的用戶控件是通用的,這就是爲什麼我使用反射。
這樣我可以有objectList1.ShowList(ListExpressions,「OriginalExpression」);
這是什麼情況ListExpressions是一個List,但作爲一個對象發送給用戶控件。通過反射,我可以檢查它是哪種類型的List,然後閱讀屬性「OriginalExpression」並顯示一個列表。
所以我要列出屬性「OriginalExpression」。
用戶控制工作正常,問題是使這最後一部分的工作。當我點擊一個項目時,我得到這個消息「對象與目標類型不匹配」。
關於如何做到這一點的任何想法?
非常感謝!
當你調試什麼是每個類型..不管你是否可以看到這兩個..錯誤幾乎解釋了什麼是問題... – MethodMan 2013-02-20 21:32:53
你能顯示究竟是什麼是這個列表的定義?爲什麼你需要思考呢? – 2013-02-20 21:43:32
對不起,我以前不能回答,列表對象不是必需的列表,它是要列出的對象,因此列表是一個對象(對象列表)。我的用戶控件是通用的,這就是爲什麼我使用反射。 這是否有意義,或者我應該考慮另一種實現? – Roiw 2013-02-22 18:52:47