C#.NET7 VS2022 使用反射动态设置按钮Click事件
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# Winform动态设置控件的值及反射技术应用 【原创】C# 深度拷贝对象 使用.NET反射+递归原理实现深度克隆 C#使用Multipart form-data方式上传文件及提交其他数据 C# LINQ使用Distinct方法检查对象某个属性的值是否重复 DevExpress GridView 表格内嵌ButtonEdit按钮列图片按钮及Click事件 C# Dev GridView表格的CustomUnboundColumnData事件异步加载图片类AsynDownImage C# JsonSettings/JsonSerializerSettings参数设置类 C# 动态对象转换为实体对象支持泛型(DynamicToEntity) C# Dev GridView表格使用RepositoryItemPictureEdit显示图标或图片 C#获取按钮的EventClick事件,EventHandlerList委托的调用列表 解决方案:C# 当按钮不可见时(Visible=False),调用Button.PerformClick事件无效! C# 动态组合SQL脚本LIKE语句及查询参数防SQL注入攻击 Dev ButtonEdit按钮设置图片和文字 设置主窗体主菜单、工具栏按钮及左侧模块导航菜单的字体样式 C# Winform 使用SUM CASE WHEN实现动态列交叉数据报表
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 | |