黑马程序员---委托与事件的区别与联系

          事件与委托:

   使用委托变量,为什么使用事件属性(同字段与属性的区别)
            外部使用委托时会出现的问题:
            1 由于可能同一个方法可能会重复添加,但最后的添加不是+=而是写成了=,就表示只赋值了最后一个,
            会出现委托链的问题 ,外部只能用+=为委托赋值。

           2 有可能不通过事件方法而直接调用委托,只能通过底层的事件方法调用委托,外部不能调用委托。
            综上:委托只能在内部调用,不能在外部调用,在外部赋值时只能用+=
            属性中的只写属性正好满足要求。
            故增加event关键字将其定义为类的委托类型的事件变量,(正如属性对字段的保护一样),这样,
            就能利用事件(实质是属性,更实质是方法,也就是事件方法)保护委托,事件有两个方法add和remove方法,
            分别通过+=和-=为私有变量委托添加和移除注册的方法,事件也是一个委托类型的变量,把事件当委托变量使用

  事件概念:

         事件就是一个特殊的委托类型的变量(前有event修饰),是一个私有的委托变量加上两个add和remove方法。公共的事件属性是对私有委托字段的封装,外部只能对事件通过+=和-=为委托字段添加和移除方法。就像以前学的属性对字段的封装一样。
         

         委托和事件的区别:
            事件是一个私有的委托变量,加上两个方法:add和remove方法,在外界通过+=和-=进行赋值操作
            事件机制可以避免在其他无关方法中提供委托调用功能,造成委托盗用。  
            
 委托是类型,事件是委托类型的变量,

     用户触发事件的执行过程:
         触发控件事件---系统自动调用底层的控件的事件方法---调用委托---执行方法。而我们现在在定义Form窗体类的时候,只需处理为控件添加事件,及事件注册方法。其他均为底层的东西,一般用不到。例如,需要重写事件的时候:
           点三次触发事件:需要定义继承于事件类(如button类)的自定义控件类,定义类的public委托类型的事件属性, 重写onclick事件方法调用委托, 
            然后1 在外部类中定义方法,同过+=和-=为事件添加方法,从而注册事件(定义事件与方法并添加)。(自动生成:类名.事件名+=写出来后按下两次Tab键,系统自动生成)
            2 在设计器中找到控件类的事件属性,双击,自动添加方法,并在designer中自动注册事件。



      


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值