字段信息在组件上返回空值

本文关键字:返回 空值 组件 信息 字段 | 更新日期: 2023-09-27 18:32:48

>我正在尝试获取 BindingSource 的事件列表,并返回 null 作为我的代码:

// bs is my BindingSource
PropertyInfo propertyInfo = bs.GetType()
    .GetProperty("Events", BindingFlags.NonPublic | BindingFlags.Static | 
        BindingFlags.Instance | BindingFlags.FlattenHierarchy);
EventHandlerList eventHandlerList = propertyInfo
    .GetValue(bs, new object[] { }) as EventHandlerList;
// The following line returns null
FieldInfo fieldInfo = typeof(BindingSource)
    .GetField("AddingNew", BindingFlags.Instance | BindingFlags.FlattenHierarchy | 
        BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); 

我放置了所有可能的绑定标志,但错误仍然存在。我做错了什么?

字段信息在组件上返回空值

使用反射找到更好的答案作为重复的 AddEventHandler - 使用 Type.GetEvent。


AddingNew 是事件,所以要操作它,你需要获取相应的自动生成的方法 - "remove_{EventName}"和"add_{EventName}":

var add = typeof(System.Windows.Forms.BindingSource).GetMethod("add_AddingNew");

正确的使用方法GetEvent

var adding = typeof(System.Windows.Forms.BindingSource).GetEvent("AddingNew");

有关如何实现事件的详细信息,请参阅事件如何实现。