C# Windows EventHandler事件的使用

news2024/9/29 6:13:44

在实现项目中有这样一个使用场景,在一个独立的类库中,它没有对其他类库的引用。所以它能调用的资源有限。这时想在这个类库的一个窗体中的一个按钮要实现一个功能时就会发现有很多要调用的资源没有,无法实现业务逻辑。这时怎么办?

        方法1:添加其他要引用的类库,实现功能。这个方法要看项目结构了。有些项目结由于以前的各种原因,无法让这个类库引用其他类库,如果加了引用会出现因引用带来的报错。这时这个方法就无法使用了,还一个原因是你的上级设计了这样一个项目结构他不希望你在破坏这个结构的情况下实现功能。这时就要用到方法2了。

        方法2:使用EventHandler事件,将按钮的点击事件以事件的方法发出,让可以调用其他资源的窗口去绑定这个事件从而实现功能逻辑。

        本方介绍一个通过中间人实现事件传递的实例。

1.将事件定义在【中间人】窗口中。

/// <summary>
        /// 功率测试 事件
        /// </summary>
        public event EventHandler PowerTestHandler;

现实现一个调用方法

/// <summary>
        /// 激光功率数据读取
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void PowerRead(object sender, EventArgs e)
        {
            if (PowerReadHandler != null)
                PowerReadHandler(sender, e);
        }

2.在事件发出窗口增加一个关联方法

/// <summary>
        /// 激光打标功率测试
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void HandlerPowerTest(object sender, EventArgs e)
        {
            GtnParamParentForm parentForm = (GtnParamParentForm)this.Owner;
            if (parentForm == null)
            {
                return;
            }
            parentForm.PowerTest(sender, e);
        }

按钮调用关联方法实现事件的发出

/// <summary>
        /// 激光器功率测试 按键
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnPowerTest_Click(object sender, EventArgs e)
        {
            HandlerPowerTest(m_nPlateIndex, e);
        }

3.主窗口注册事件,并实现功能逻辑。

parametersParentForm 对象是GtnParamParentForm 中间人窗口对象的实例。

ParametersParentForm_PowerTestHandler方法是实现逻辑的,如果要参数可以通过object sender 参数实现参数的传递

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2176021.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何设置一个拉风的PowerShell命令永久别名?

大家好啊&#xff0c;我是豆小匠。 这期来介绍下怎么在PowerShell中设置自己的命令别名。类似Linux系统的alias&#xff01; 1、设置永久别名 设置永久别名需要把命令写入到Microsoft.PowerShell_profile.ps1文件中&#xff08;ps1就是PowerShell脚本文件的扩展名&#xff09…

华为LTC流程架构分享

文末附LTC流程管理PPT下载链接~ 前面笔者分享了华为LTC流程相关PPT&#xff0c;应读者需求&#xff0c;今天从架构角度进行再次与读者共同学习下LTC流程架构。 华为LTC流程架构是一个全面且集成的业务流程体系&#xff0c;从线索发现开始&#xff0c;直至收回现金&#xff0c…

MySQL基础--表的增删改查

目录 一、前言二、新增&#xff08;Create)2.1 单行数据全列插入2.2 单行数据全列插入&#xff08;简写&#xff09;2.3 指定列插入2.4 多行插入 三、查询3.1 全列查询3.2 指定列查询3.3 查询的结果是一个表达式3.3.1 把所有的语文成绩在原本的基础上加一分3.3.2 列与列之间的计…

Docker精讲:基本安装,简单命令及核心概念

docker服务部署 docker是一个容器管理工具&#xff0c;其内部容器才是具体服务&#xff0c;所以我们在安装docker时不需要有太多定制内容&#xff0c;只需要通过yum安装即可 1. 更新系统包 #更新现有依赖包&#xff0c;防止现有依赖包版本过低影响docker安装 yum update2. 安…

【Python】FeinCMS:轻量级且可扩展的Django内容管理系统

在互联网飞速发展的今天&#xff0c;内容管理系统&#xff08;CMS&#xff09;成为了网站开发中的核心工具&#xff0c;尤其对于需要频繁更新内容的企业和个人站点而言&#xff0c;CMS 提供了极大的便利。市场上有许多不同的 CMS 工具可供选择&#xff0c;其中基于 Django 框架…

游戏如何对抗改包

游戏改包是指通过逆向分析手段及修改工具&#xff0c;来篡改游戏包内正常的设定和规则的行为&#xff0c;游戏包被篡改后&#xff0c;会被植入/剔除模块进行重打包。 本期图文我们将通过实际案例分析游戏改包的原理&#xff0c;并分享游戏如何应对改包问题。 安卓平台常见的改…

Arch - 架构安全性_保密(Confidentiality)

文章目录 OverView导图保密保密强度与成本客户端加密密码存储与验证 Code总结 OverView 即使只限定在“软件架构设计”这个语境下&#xff0c;系统安全仍然是一个很大的话题。 接下来我们将对系统安全架构的各个方面进行详细分析&#xff0c;包括认证、授权、凭证、保密、传输…

三菱PLC数据 转 profinet IO项目案例

目录 1 案例说明 1 2 VFBOX网关工作原理 1 3 准备工作 2 4 网关采集三菱PLC数据 2 5 用PROFINET IO协议转发数据 5 6 其他说明 8 7 案例总结 9 1 案例说明 设置vfbox网关采集三菱PLC数据把采集的数据转成profinet IO协议转发给其他系统。 2 VFBOX网关工作原理 VFBOX网关是协…

探索光耦:光耦在电脑电源中的应用及其重要性

随着计算机技术的飞速发展&#xff0c;电脑已成为现代生活和工作中不可或缺的工具。无论是日常办公、游戏娱乐还是复杂的图像处理&#xff0c;电脑电源的稳定性和安全性都至关重要。作为电脑电源的核心部件之一&#xff0c;光耦&#xff08;光电耦合器&#xff09;在提升电源性…

智慧场馆智能化设计方案

1. 智慧场馆智能化规划设计方案 本方案针对智慧场馆的智能化系统进行综合设计&#xff0c;包括入侵报警、视频监控、门禁管理、公共广播等子系统&#xff0c;旨在实现智慧、安全、节能的现代化场馆。 2. 系统设计范围 设计内容广泛&#xff0c;覆盖了从安全监控到环6境监测&…

【期刊】论文索引库-SCI\SSCI\IE\南大核心\北大核心\CSCD等

外文期刊检索 SCI SCI即《科学引文索引》(Science Citation Index),是由美国科学信息研究所(Institute for Scientific Information)创建于1961年,收录文献的作者、题目、源期刊、摘要、关键词,不仅可以从文献引证的角度评估文章的学术价值,还可以迅速方便地组建研究课…

基于php的律所管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目…

Tomcat安装和配置教程(图文详解,最简洁易懂)

本教程主要分为两个部分&#xff1a;Tomcat的下载和安装、Tomcat的配置 前提 Tomcat都需要Java环境&#xff0c;所以首先需要安装JDK,本教程默认已安装JDK1.8 未安装JDK可看JDK安装教程&#xff1a;JDK1.8安装教程 一、Tomcat下载和安装 1、首先进入Apache Tomcat官网&…

ATLAS/ICESat-2 L3B Monthly Gridded Atmosphere (大气月度网格数据集)V005

目录 简介 摘要 代码 引用 网址推荐 0代码在线构建地图应用 机器学习 ATLAS/ICESat-2 L3B Monthly Gridded Atmosphere V005 简介 该产品报告每周全球云覆盖率、海洋上总列光学深度、极地云覆盖率、风吹雪频率、视表面反照率以及地面探测频率。 参数&#xff1a;云光学…

github双重验证(2FA)启用方法

一、双重验证-2FA 在去年看到过说github启用双重验证的通知&#xff0c;觉得做为一个普通开发者&#xff0c;可能没有这么快会要求启用。结果&#xff0c;今天早晨一来就收到了邮件&#xff0c;要求说在11月底完成2FA的认证&#xff0c;否则权限受限。真是无了语。所谓2FA好理…

基于SSH的酒店管理系统的设计与实现 (含源码+sql+视频导入教程+文档+PPT)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于SSH的酒店管理系统拥有三种角色 管理员&#xff1a;用户管理、房间分类管理、房间信息管理、开房管理、退房管理、开房和预订记录查询等 前台&#xff1a;房间分类管理、房间信息管…

工作中使用人工智能的政策和程序的重要性

在当今快速发展的技术环境中&#xff0c;人工智能 (AI) 已成为各行各业业务运营不可或缺的一部分。作为政策管理者&#xff0c;必须了解在组织内制定强有力的 AI 使用政策和程序的重要性。 这不仅可以确保合规性和道德标准&#xff0c;还可以保护组织免受潜在风险并最大限度地…

水分对于生活的重要性

在探讨健康养生的广阔领域中&#xff0c;一个简单却至关重要的元素往往被忽视——那就是水分。水&#xff0c;作为生命之源&#xff0c;不仅维持着人体的基本生理功能&#xff0c;更是健康与活力的基石。今天&#xff0c;让我们一同深入探索水分在健康养生中的不可替代作用&…

代码随想录_刷题记录_第四次

二叉树 — 理论基础 种类&#xff1a; 满二叉树&#xff08;所有层的节点都是满的&#xff0c;k&#xff1a;深度 节点数量&#xff1a;2^k - 1&#xff09;完全二叉树&#xff08;除了最后一层&#xff0c;其余层全满&#xff0c;并且最后一层从左到右连续&#xff09;二叉搜…

LINUX--调度未来任务

crontab 文件中的用户作业时间格式怎么解释&#xff1f; * * * * * command 分 时 日 月 周 x-y表示范围&#xff0c;包括x,y的值 */x 表示x的间隔 x,y表示列表&am…