好,感謝ILSpy,我知道菜單項類包含一個名爲MenuItemData的內部類,它包含自身的內部成員名爲的OnDrawItem 。通過反射檢索內部嵌套類的內部成員
給定一個MenuItem,我想檢索對應於成員onDrawItem的對象。但我所能做的只是獲取FieldInfo,而不是對象本身。
這裏是我的代碼:
Dim obj As Object
Dim fi As FieldInfo
Dim item as System.Windows.Forms.MenuItem
Dim mType As System.Type
mType = item.GetType()
mType = mType.GetMember("MenuItemData", BindingFlags.NonPublic)(0)
fi = mType.GetField("onDrawItem", BindingFlags.Static Or BindingFlags.Instance Or BindingFlags.NonPublic)
obj = fi.GetValue(item)
當到達最後一行,我得到一個錯誤說類似的東西(它traduced):
字段「的OnDrawItem」中定義的類型「 System.Windows.Forms.MenuItem + MenuItemData「不是類型的目標對象的字段」 System.Windows.Forms.MenuItem
我不知道通過什麼對象爲t他在最後一行GetValue函數。任何線索?
---- ----編輯
我的目標是刪除的菜單項的基礎事件處理程序,命名爲DRAWITEM。請參閱this post以及函數RemoveClickEvent
中已公認的答案以便更好地理解。
這不是C#,這是Visual Basic中。它仍然是視覺工作室,但標籤是錯誤的。 – Nevyn
我添加了C#標籤,以便如果某人在C#中有答案,他可以添加它 – GianT971