zoukankan      html  css  js  c++  java
  • 演绎事件委托

    演绎事件委托

    本篇博文,Insus.NET想使用一个超简单的例子来演绎事件委托。

    我们在开发网页时,刚开始时在网页的顶部放一个铵钮(web control),想实现一个功能。


    在xxx.aspx.cs:


    OK,某一天,此网页的内容随时间而增长,出现了滚屏。想在网页的底再放一个铵钮,这个铵钮执行事件跟网页顶部铵钮一的事件一样的。

     


    这样子,不管是点击按哪一个铵钮,所执行的事件是一样的:



    也许一开始你并没有想到onClick的事件名,直接使用铵钮一的onClick的名称,而是如下面的写法:



    在xxx.aspx.cs,我们会使用习惯的习惯,拷贝铵钮一的事件粘贴在铵钮二的事件里:



    呵呵,此时网页在运行时,点击按钮二与点击铵钮一执行的是相同的事情。

    某一天,你回过头来Review你写的代码,会发现代码已经冗余了,你会建一个私有方法,把铵钮一或二的事件代码粘贴于这个方法内,然后在铵钮一或二执行这个方法即可。

     上面好象没有看到任何事件委托情形。没有关系,我们稍改一下xxx.aspx写法吧,在网页中,不写onClick事件,而是在cs中产生:

     
    然后在xxx.aspx.cs:


    此时,网页运行起来,没有什么不同。执行事件与效果跟前面动画演示一样。

    我们再重新看看这个xxx.aspx.cs的代码:



    发现:

    protected void Button1_Click(object sender, EventArgs e)

    protected void Button2_Click(object sender, EventArgs e)


    所执行的代码完全一样,只是这个事件名称不同。

    既然一样,我们就可以跟上面重构方法一样,定义一个相同的名称,参照下面五个步骤:




    最后再重构一步:



    把xxx.aspx.cs所有注释删除,此时,我们看到了事件的委托:


     
     
    分类: ASP.NETC#.NET
  • 相关阅读:
    Java JMX 监管
    Spring Boot REST(一)核心接口
    JSR 规范目录
    【平衡树】宠物收养所 HNOI 2004
    【树型DP】叶子的颜色 OUROJ 1698
    【匈牙利匹配】无题II HDU2236
    【贪心】Communication System POJ 1018
    【贪心】Moving Tables POJ 1083
    Calling Extraterrestrial Intelligence Again POJ 1411
    【贪心】Allowance POJ 3040
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3734165.html
Copyright © 2011-2022 走看看