【新阁教育】C#在自定义事件里传递自定义数据
相信很多小伙伴都知道传值的一些方式,比如构造方法传值、属性传值、Tag传值、委托传值、窗体传值等,今天给大家分享的一种方式,是通过自定义事件来传值。
对于一般的系统事件,是有两个参数的,一个是sender,一个是EventArgs,对于sender,我们可能用得还比较多一些,它表示这个事件的触发者,一般指向的是一个控件,但是对于EventArgs,我们一般用得会比较少,今天分享的自定义事件传值就是通过EventArgs来实现。【公众号 --dotNet工控上位机:thinger_swj】
基础篇
通过EventArgs来实现传值,我们首先需要创建一个类,继承EventArgs,我们可以将需要传递的数据,直接在类里面定义成属性,这里以传递一个布尔、一个浮点数为例,代码如下所示:
然后我们创建一个类,类里面创建一个事件,并激发事件,这里传递的值为True和123.0,代码如下:
我们在主窗体中,实例化类,并进行事件绑定,看看能不能获取到传递的数据,代码如下:
运行结果如下所示:
进阶篇
在上面知识掌握的基础上,我们可以做进一步优化,在定义事件时,可以不用EventHandler,可以自己定义参数来实现,我们再创建一个类——Test2,代码如下:
这样我们在事件处理中,就可以直接获取属性了,而不需要对EventArgs进行强制转换,代码如下:
高级篇
如果继续深入的话,我们可以将传递的参数改成泛型,这样就可以轻松传递单个参数了,对于多个参数的情形,我们可以使用对象,单一参数比较简单,这里就不赘述了,主要针对对象传递进行说明,首先创建一个参数实体类,这里创建三个属性,代码如下:
创建事件参数类,代码如下:
再创建一个类——Test3,代码如下:
主窗体调用并进行事件处理,代码如下:
运行结果如下:
总结:这样我们就通过三种不同的方式实现了自定义事件的参数传值
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构