C#如何知道控件注册了哪些事件,是通过代码获取这个控件的已注册事件列表
1条回答 默认 最新
- 1002 2018-05-07 03:12关注
EventInfo[] memberinfo = (typeof(System.Windows.Forms.Button)).GetEvents();
foreach (EventInfo info in memberinfo)
{
//Console.WriteLine(info.Name);
PropertyInfo propertyInfo = (typeof(System.Windows.Forms.Button)).GetProperty("Events", BindingFlags.Instance | BindingFlags.NonPublic);
EventHandlerList eventHandlerList = (EventHandlerList)propertyInfo.GetValue(this.button2, null);
FieldInfo fieldInfo = (typeof(Control).GetField("Event" + info.Name, BindingFlags.Static | BindingFlags.NonPublic));
if (fieldInfo != null)
{
Delegate d = eventHandlerList[fieldInfo.GetValue(null)];
if (d != null)
{
listBox1.Items.Add(d.Method.Name);
}
}
}解决 无用评论 打赏 举报