你不是都问过了么,使用反射啊
大侠可以试下,通过反射可以完成基本功能,但是要通用,还是有问题,打个比方哈,你要获取到绑定到一个CheckBox上的CheckedChanged事件上的所有方法,你怎么写呢?我抛砖引玉一下:
PropertyInfo propertyInfo = label1.GetType().GetProperty("Events", BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance); EventHandlerList eventHandlerList = propertyInfo.GetValue(chobox1, new object[] { }) as EventHandlerList; FieldInfo fieldInfo; StringBuilder sb = new StringBuilder(); EventInfo[] events = chobox1.GetType().GetEvents(); for (int i = 0; i < events.Length; i++) { fieldInfo = typeof(Control).GetField("Event" + events[i].Name.Replace("Changed",""), BindingFlags.NonPublic| BindingFlags.Static);} var eventKey = fieldInfo.GetValue(chobox1); var eventHandler = eventHandlerList[eventKey] as Delegate; Delegate[] invocationList = eventHandler.GetInvocationList(); foreach (var handler in invocationList) { sb.Append(handler.GetMethodInfo().Name+"_"+i + "\r\n"); }
很可惜,以上代码完不成任务,button的click事件可以轻易完成,但是这个不行。所以想问问大伙有没有更好,更通用的解决方案。
备注:各位大侠尽量帮忙贴下代码哈,光回复反射木有用~
属性视图里面有个闪电符号.
里面可以看
。。。。。
反射