用一个简单的例子来演绎事件委托
本篇博文,Insus.NET想使用一个超简单的例子来演绎事件委托。
我们在开发网页时,刚开始时在网页的顶部放一个铵钮(web control),想实现一个功能。
OK,某一天,此网页的内容随时间而增长,出现了滚屏。想在网页的底再放一个铵钮,这个铵钮执行事件跟网页顶部铵钮一的事件一样的。
这样子,不管是点击按哪一个铵钮,所执行的事件是一样的:
也许一开始你并没有想到onClick的事件名,直接使用铵钮一的onClick的名称,而是如下面的写法:
在xxx.aspx.cs,我们会使用习惯的习惯,拷贝铵钮一的事件粘贴在铵钮二的事件里:
呵呵,此时网页在运行时,点击按钮二与点击铵钮一执行的是相同的事情。
某一天,你回过头来Review你写的代码,会发现代码已经冗余了,你会建一个私有方法,把铵钮一或二的事件代码粘贴于这个方法内,然后在铵钮一或二执行这个方法即可。
上面好象没有看到任何事件委托情形。没有关系,我们稍改一下xxx.aspx写法吧,在网页中,不写onClick事件,而是在cs中产生:
此时,网页运行起来,没有什么不同。执行事件与效果跟前面动画演示一样。
我们再重新看看这个xxx.aspx.cs的代码:
发现:
protected void Button1_Click(object sender, EventArgs e)
和
protected void Button2_Click(object sender, EventArgs e)
所执行的代码完全一样,只是这个事件名称不同。
既然一样,我们就可以跟上面重构方法一样,定义一个相同的名称,参照下面五个步骤:
最后再重构一步:
把xxx.aspx.cs所有注释删除,此时,我们看到了事件的委托:
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· 【全网最全教程】使用最强DeepSeekR1+联网的火山引擎,没有生成长度限制,DeepSeek本体
2013-05-16 获取控件在运行时于屏幕中的位置
2013-05-16 演练GridView控件显示目录图片
2011-05-16 The value '5/15/2012' of the MaximumValue property of 'RangeValidator1' cannot be converted to type 'Date'.
2011-05-16 Asp.net网站如何播放Flv视频