public void ReSetEventDelegate(Control control, string eventName, Delegate newEvent)
{
var bindflage = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.IgnoreCase | BindingFlags.Static;
var propertyInfo = control.GetType().GetProperty("Events", bindflage);
if (propertyInfo != null)
{
object eventList = propertyInfo.GetValue(control, null);
if (eventList != null && eventList is EventHandlerList)
{
var list = (EventHandlerList)eventList;
var eveinfo = control.GetType().GetEvent(eventName);
var fieldInfo = eveinfo.DeclaringType.GetField(fieldName, bindflage);
if (fieldInfo == null)
return;
var objectDelegate = list
C# 替换控件的事件
最新推荐文章于 2021-09-29 15:39:56 发布