C#.NET7 VS2022 使用反射动态设置按钮Click事件
作者:C/S框架网|www.csframewo  发布日期:2023/03/20 13:59:34
  C#.NET7 VS2022 使用反射动态设置按钮Click事件

使用.NET反射机制动态设置按钮Click事件,开发环境:VS2022,.NET7
注意:.NET Framework 通过 EventClick获取FieldInfo,.NET7改名为 s_clickEvent。


C# Code:


//获取Control的Events属性 = {System.ComponentModel.EventHandlerList Events}
System.Reflection.PropertyInfo propertyInfo = (typeof(Control)).GetProperty("Events", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Public);

//获取Events属性值 = {System.ComponentModel.EventHandlerList}
EventHandlerList eventHandlerList = (EventHandlerList)propertyInfo.GetValue(btnRef, null);

//获取EventClick事件 = {System.Object s_clickEvent}, 注意:.NET7改名为:s_clickEvent
System.Reflection.FieldInfo fieldInfo = (typeof(Control)).GetField("s_clickEvent", System.Reflection.BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Static);

//获取委托
Delegate d = eventHandlerList[fieldInfo.GetValue(null)];

if (d != null)
{
  
foreach (Delegate temp in d.GetInvocationList())
  {
    btnNew.Click +
= (EventHandler)temp;
  }
}

//来源:C/S框架网 | www.csframework.com | QQ:23404761







C/S框架网|原创精神.创造价值.打造精品


扫一扫加作者微信
C/S框架网作者微信 C/S框架网|原创作品.质量保障.竭诚为您服务
上一篇 下一篇