好的,感谢ILSpy,我知道MenuItem类包含一个名为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)
到达最后一行时,我收到一条错误消息(被引用):
在“System.Windows.Forms.MenuItem+MenuItemData”类型中定义的字段“onDrawItem”不是“System.Windows.Forms.MenuItem”类型的目标对象的字段
我不知道在最后一行将什么对象传递给 GetValue 函数。有什么线索吗?
- - 编辑 - -
我的目标是删除名为DrawItem的 menuItem 的基本 eventHandler 。请参阅此帖子和已RemoveClickEvent
接受答案中的功能以获得更好的理解。