C#中如何定义带参数的EventHandler?

简述

        事件调用的所有方法都需要两个参数:object sender,EventArgs e。该事件使用这两个参数调用方法,因此我们不能直接添加自定义参数。

        比如下面这段代码,我们想在 MessageBox 中显示字符串 ' s ',这必然是不成。

private void Form1_Load (object sender, EventArgs e)
{string s = "Hello!";button.Click += new EventHandler(show_msg);
}private void show_msg(object sender, EventArgs e, string s) 
{MessageBox.Show(s);
}

        你肯定要问,我为什么一定要传参数,我定义全局的不成么?当然可以,但是假如你这个事件关联到全局的字典,在事件里面要区分是谁调用,那就有用了。

        你可能还要问,那我再sender里面定义一些参数不就成了么?确实也可以,但是假如是跨进程呢,事件是由其它进程触发,我们无法挂载任何多余信息,而且进程状态不可控,并且关联到我们系统内的id,那么就需要再事件里面找到id,根据什么找呢?

        所以更好的方法就是在绑定事件的时候,就把自定义的参数传入。

        最简单的解决方案肯定是使用委托来调用我们的方法。

使用lambda 运算符

        代码清晰,简单方便

private void Form1_Load (object sender, EventArgs e)
{string s = "Hello!";button.Click += (sender2, e2) => show_msg(sender2, e2, s);
}private void show_msg (object sender, EventArgs e, string s)
{MessageBox.Show(s);
}

使用委托重写

private void Form1_Load (object sender, EventArgs e)
{string s = "Hello!";button.Click += delegate(object sender2, EventArgs e2){show_msg(sender2, e2, s);};
}private void show_msg(object sender, EventArgs e, string s)
{MessageBox.Show(s);
} 

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

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

相关文章

VS Code开发STM32F4xx jlink接口swd模式

VS Code开发STM32F4xx jlink接口swd模式(测试OK) 下面的代码(已验证),只作为参考,不同情况的更改参照文章末尾链接 c_cpp_properties.json代码 (其中include路径和宏定义可以参照makefile添加) : {"configurations": [{"name"…

数据库系统工程师之数据结构

在数据库系统工程师的考试中,数据结构是一个重要的考点。数据结构主要关注数据元素之间的相互关系以及它们的组织和存储方式。以下是数据库系统工程师考试中数据结构的主要考点: 1.线性结构:线性结构是数据元素之间存在一对一关系的数据结构。…

上市公司-人工智能的采纳测算程度数据集(2003-2021年)

01、数据简介 人工智能(Artificial Intelligence,AI)是一个研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的新技术科学。它是计算机科学的一个分支,旨在生产出一种能以人类智能相似的方式做出反应的智能机…

汽车新智能图谱里:理解腾讯的AI TO B路径

将自身的C2B产品和产业理解充分AI化,在自身内部场景率先验证跑通后,进而释放给产业伙伴,对应到具体的需求痛点,一起打磨对应的行业AI模型。 这也恰是腾讯“实用”标签背后的AI产业路径。 作者|皮爷 出品|产业家 成本、性价…

直流有刷电机入门

文章目录 123455.25.3 1 2 电刷 材质是 石墨 3 130马达 就几毛钱 几块钱这学的就是减速电机P MAX一定 pf*v 降低速度 扭矩就会大 4 还有空载电流 过大负载 时 有堵转电流 (可分析电流 来看电机工作状态)RPM 转每分钟 5 5.2 这的线圈 是简化后的转子绕组…

一个数据人眼中的《上游思维》

最近读了《上游思维》这本书,很受启发,我想从一个数据人的角度来聊一聊我对这本书的读后感。上游思维本质上是帮助我们解决问题,我发现在解决问题相关的每个阶段:发现问题、找到解决问题的方法、解决问题的过程中、评估问题以及预…

电磁仿真--基本操作-CST-(4)

目录 1. 简介 2. 建模过程 2.1 基本的仿真配置 2.2 构建两个圆环体和旋转轴 2.3 切分圆环体 2.4 衔接内外环 2.5 保留衔接部分 2.6 绘制内螺旋 2.7 绘制外螺旋 2.8 查看完整体 2.9 绘制引脚 2.10 设置端口 2.11 仿真结果 3. 使用Digilent AD2进行测试 3.1 进行…

Stable Diffusion入门指南

SD 保姆教程,从原理功能到案例输出展示,最后简述 ControlNet 的使用技巧。 Stable Diffusion 的基本介绍 Stable Diffusion是一种基于扩散过程的图像生成模型,可以生成高质量、高分辨率的图像。它通过模拟扩散过程,将噪声图像逐…

大厂面试题:两道来自京东的关于MyBatis执行器的面试题

大家好,我是王有志。 今天给大家带来两道来自于京东关于的 MyBatis 面试题: MyBatis 提供了哪些执行器(Executor)?它们有什么区别?Mybatis 中如何指定 Executor 的类型? MyBatis 提供了哪些执…

自然语言处理的发展历程

1.自然语言处理发展的7个阶段 序号阶段时间贡献代表人物1起源期1913-1956思考使用图灵算法计量模型来描述自然语言,描述词语及词语之间的关系。这一阶段停留在理论层面做探索图灵、马尔可夫、香农2基于规则的形式语言理论期1957-1970形式语言理论的提出&#xff0c…

深度学习系列66:试穿模型IDM-VTON上手

1. 模型概述 如图,总体流程为: 输入为:衣服的编码xg;人物noise的编码xt;人物身上衣物的mask和人体pose分割(densepose);衣服部分经过两部分网络:1)高级语义网络IP-Adapter&#xff…

3122.使矩阵满足条件的最少操作次数

周赛第三题,知道要用动态规划,但是不知道怎么回到子问题 显然根据题意我们需要让每一列都相同,但是相邻列不能选择同一种数字,观察到数据nums[i]介于0-9,我们就以此为突破口. 首先我们用count[n][10], count[i][j]记录第i1列值为j的元素个数,转移方程如下: dfs(i,pre) max(dfs…

pytest-xdist:远程多主机 - 分布式运行自动化测试

简介:pytest-xdist插件使用新的测试执行模式扩展了pytest,最常用的是在多个CPU之间分发测试以加快测试执行,即 pytest -n auto同时也是一个非常优秀的分布式测试插件,分别支持ssh和socket两种方式实现master和worker的远程通讯。…

游戏新手村20:游戏落地页广告页如何设计

在互联网营销中,着陆页(Landing Page,有时被称为首要捕获用户页)就是当潜在用户点击广告或者搜索引擎搜索结果页后显示给用户的网页,LandingPage对于游戏广告的转化率和重要性就不言而喻了。 网页游戏LP页面 上图就是我们大家在浏览网站时不小心蹦出或者主动点击某…

python学习笔记12:小数类型的角度到度分秒的转换

目录 实现方式1 实现方式2 本博客讲述了两种计算方式及其代码的实现,并在最后对比了两种方法的结果差异。 比较结果显示,不同的实现方式之间可能存在数值误差。 实现方式1 具体计算步骤如下: 数值取整数部分得到度 108.5745800204 -->…

IIS中搭建.Net Core项目,步骤详解

一、准备服务器 1)安装IIS 这个比较简单,百度一下就行 2)安装 .NET Core 运行时 下载地址:下载 .NET(Linux、macOS 和 Windows) 因为我是本地开发,所以我下载的是SDK 安装成功之后显示如下: 检查是否安装…

万兆以太网MAC设计(6)IP协议报文格式详解以及IP层模块设计

文章目录 前言:IPv4报文协议格式二、IP_RX模块设计2.1、模块接口2.2、模块工作过程 三、IP_TX模块设计3.1、模块接口3.2、模块工作过程 四、仿真4.1、发送端4.2、接受端 前言:IPv4报文协议格式 参考:https://sunyunqiang.com/blog/ipv4_prot…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-5

前言: 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM(MX6U)裸机篇”视频的学习笔记,在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

txt大文件拆分(批量版)

之前的python程序只能拆分单个文件,这里重新加了个文件夹拆分的功能(打包好的exe文件在文章末尾) 使用步骤:运行代码–>把文件放到input文件夹里–>命令行界面回车–>output文件夹输出文件 outputPath "./output&q…

曲线「三分」

明明做作业的时候遇到了 n 个二次函数Si(x)ax^2bxc ,他突发奇想设计了一个新的函数F(x)max{Si(x)},i1,2……n 。 明明现在想求这个函数在 的最小值,要求精确到小数点后四位,四舍五入。 输入格式 输入包含 T组数据,每组第一行一…