zoukankan      html  css  js  c++  java
  • C#自定义处理事件(作者还没完全理解事件和委托,所以有可能错漏百出)

    1.C#的处理事件整个框架,其实就是观察者模式的一种应用

           观察者模式:老师监视学生考试,学生若作弊,老师立即打人

    2.涉及的元素:

       所以必须涉及两个对象事件引发者(触发)--学生;事件处理者--老师

       同时涉及两个事件触发事件--作弊;处理事件--打人

    3.学生类

         //其实Cheating就是一个委托,而委托就是一组函数的集合,函数类(汗!!委托 这名字起得太烂了)

         public event EventHandler Cheating;//这个事件是学生引发的,所以事件应该写在学生类里

      

         //触发事件,要跟定义事件在同一个类中(只要调用了这个方法,就会出发整个事件的进行,监听->满足条件->动作)

         public void Testing(){

               //...

               if(Cheating!=null)//不为null表示有其他对象在监听他

                       Cheating(this,new EventArgs());//都说了,委托实质就是方法,委托的参数固定为两个:第一个问触发者object;第二个为参数EventArgs

       

    4.老师类

           Student _student = new Student();//老师监视学生,所以把学生写成老师的成员变量,组合

             _student.Cheating += new EventHandler(SlapStudent);//给学生绑定作弊事件,同时绑定老师发现作弊后的动作函数

          //处理事件当然得写在 监视者(观察者)里

          public void SlapStudent(object sender,EventArgs e){

                //给学生一个打耳光

          }

  • 相关阅读:
    [java,2019-01-28] 枪手博弈,谁才是最后赢家
    [java,2019-01-25] 图片和二进制互转
    [java,2019-01-15] word转pdf
    [python,2018-06-29] 37%法则及其拓展解决恋爱问题
    [java,2018-06-26] 扑克牌抽牌求和问题
    [python,2018-06-25] 高德纳箭号表示法
    [java,2017-06-12] myEclipse双击无法打开文件
    OpenGL核心技术之法线贴图
    游戏中水的渲染技术系列一
    Unity 3D实现帧同步技术
  • 原文地址:https://www.cnblogs.com/tommy-huang/p/4244874.html
Copyright © 2011-2022 走看看