热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

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

事件与委托:使用委托变量,为什么使用事件属性(同字段与属性的区别)外部使用委托时会出现的问题:1由于可能同

          事件与委托:

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

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

  事件概念:

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

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

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



      



推荐阅读
author-avatar
mobiledu2502921033
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有