解决方案:C# 当按钮不可见时(Visible=False),调用Button.PerformClick事件无效!
解决方案:C# 当按钮不可见时(Visible=False),调用Button.PerformClick事件无效!解决方案
获取原按钮实例的Click事件,使用Invoke方式执行Click事件委托。
C# Code:
SimpleButton originalButton = (SimpleButton)GetButton((sender as SimpleButton).Tag.ToString());
//当originalButton不可见时,调用PerformClick事件无效!
//if (originalButton != null) originalButton.PerformClick();
//解决方案:获取原按钮实例的Click事件,使用Invoke方式执行Click事件委托
System.Reflection.PropertyInfo propertyInfo = (typeof(Control)).GetProperty("Events", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
System.Reflection.FieldInfo fieldInfo = (typeof(Control)).GetField("EventClick", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic);
EventHandlerList eventHandlerList = (EventHandlerList)propertyInfo.GetValue(originalButton, null);
Delegate method = eventHandlerList[fieldInfo.GetValue(null)];
if (method != null)
{
//委托的调用列表
var list = method.GetInvocationList();
if (list.Count() == 1)
{
originalButton.Invoke(method, sender, e);
}
else
{
//若有多个Click事件,依次调用
foreach (Delegate d in list) originalButton.Invoke(d, sender, e);
}
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
//当originalButton不可见时,调用PerformClick事件无效!
//if (originalButton != null) originalButton.PerformClick();
//解决方案:获取原按钮实例的Click事件,使用Invoke方式执行Click事件委托
System.Reflection.PropertyInfo propertyInfo = (typeof(Control)).GetProperty("Events", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
System.Reflection.FieldInfo fieldInfo = (typeof(Control)).GetField("EventClick", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic);
EventHandlerList eventHandlerList = (EventHandlerList)propertyInfo.GetValue(originalButton, null);
Delegate method = eventHandlerList[fieldInfo.GetValue(null)];
if (method != null)
{
//委托的调用列表
var list = method.GetInvocationList();
if (list.Count() == 1)
{
originalButton.Invoke(method, sender, e);
}
else
{
//若有多个Click事件,依次调用
foreach (Delegate d in list) originalButton.Invoke(d, sender, e);
}
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761

参考文档:
C# 调用Process.Start 请求的操作需要提升解决方案
解决方案:启动WebApiServer失败,调用的目标发生了异常
CSFrameworkV6旗舰版 | 基础资料窗体改装主从子表(多级明细表)解决方案|C/S开发框架
CSFramework.Workflow | 可视化工作流引擎 | 业务系统集成解决方案|流程引擎
VS2022/.NET7:CA1416:可在所有平台上访问此调用站点。"xxx"仅在 'windows'上受支持。
C#.NET百度地图定位API解决方案|C/S开发框架
百度地图API调用实例之地址标注与位置显示-C/S开发框架
C#.NET百度地图定位API解决方案
C#源代码安全缺陷与提高源代码质量解决方案-WCF服务配置安全
C#源代码安全缺陷与提高源代码质量解决方案
WCF开发框架-客户端采用Certificate认证模式调用基于HTTPS协议的WCF接口
WCF开发框架-客户端采用Windows身份认证调用HTTPS协议WCF接口
WCF开发框架-客户端采用BASIC身份认证调用HTTPS协议WCF接口
原创:C/S架构快速开发框架通用可配置的数据修改日志解决方案
Winform调用WebApi接口实现增删改查CRUD实例源码
代码生成器加载用户表和视图报错解决方案|C/S框架网
C# 调用Process.Start 请求的操作需要提升解决方案
解决方案:启动WebApiServer失败,调用的目标发生了异常
CSFrameworkV6旗舰版 | 基础资料窗体改装主从子表(多级明细表)解决方案|C/S开发框架
CSFramework.Workflow | 可视化工作流引擎 | 业务系统集成解决方案|流程引擎
VS2022/.NET7:CA1416:可在所有平台上访问此调用站点。"xxx"仅在 'windows'上受支持。
C#.NET百度地图定位API解决方案|C/S开发框架
百度地图API调用实例之地址标注与位置显示-C/S开发框架
C#.NET百度地图定位API解决方案
C#源代码安全缺陷与提高源代码质量解决方案-WCF服务配置安全
C#源代码安全缺陷与提高源代码质量解决方案
WCF开发框架-客户端采用Certificate认证模式调用基于HTTPS协议的WCF接口
WCF开发框架-客户端采用Windows身份认证调用HTTPS协议WCF接口
WCF开发框架-客户端采用BASIC身份认证调用HTTPS协议WCF接口
原创:C/S架构快速开发框架通用可配置的数据修改日志解决方案
Winform调用WebApi接口实现增删改查CRUD实例源码
代码生成器加载用户表和视图报错解决方案|C/S框架网
其它资料:
什么是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内容管理系统 |
什么是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内容管理系统 |
在线客服
