好,感谢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