用一个简单的例子来演绎事件委托
事件 一个 简单 例子 委托
2023-09-27 14:21:31 时间
本篇博文,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所有注释删除,此时,我们看到了事件的委托:
相关文章
- 前端开发JS:事件循环机制、调用栈以及任务队列
- jquery监听动态添加的input的change事件
- Button需要点击两次才触发点击事件问题
- 纳米技术系列:物联网的下一个大事件竟来自极小之处
- Gtest:事件
- 弯道超车,换一个思路,避免addEventListener为同一个元素重复赋予事件
- Arbor Networks:不间断威胁正推动对托管安全服务和事件响应支持的需求
- ExtJS要利用观察者模式 去实现自定义的事件
- 前端百题斩【032】——两个角度一个实战了解事件循环
- 【网络编程】事件选择模型
- 工业智能网关BL110应用之二十四: 如何添加报警与事件
- css--禁用点击事件
- PyQt(Python+Qt)实现的GUI图形界面应用程序的事件捕获方法大全及对比分析
- 事件分发机制(二)
- mysql事件失效
- oracle等待事件12——网络上的等待事件
- JavaScript事件详解-zepto的事件实现
- 【Cubase】Cubase 量化设置 ( 量化预置 | 长度量化 | 快捷键设置 | 量化开头 | 量化 MIDI 事件结尾 | 量化 MIDI 事件长度 )
- UE动画状态机的事件触发顺序测试
- c# tabcontrol事件以及上下文菜单
- 调用Android自带日历功能(日历列表单、添加一个日历事件)