C#事件的学习体会
来源:互联网 发布:辽宁软件行业协会 地址 编辑:程序博客网 时间:2024/05/05 01:35
事件的实现是通过委托机制完成的,每个事件维护一个自己的委托列表,保存所有注册到这个事件的控件委托。
单个事件类型
事件类型定义了一个委托原型public delegate void XXXEventHandler(object sender, XXXEventArgs);
并且维护一个委托列表public event XXXEventHandler YYY;
还定义一个受保护虚方法负责通知事件的登记对象protected virtual void OnXXX(XXXEventArgs e){...}
控件的定义,首先把自己注册到事件的委托列表中,然后按照委托原型定义自己的委托方法。当事件发生时,OnXXX会通知所有注册到事件XXXEventArgs 的委托列表里面的控件,XXXEvent 事件通过委托机制,使控件会调用自己的委托方法来响应事件。
控件通过维护一个的事件/委托的集合来处理自己的多个事件,例如button可以有click事件/click委托,focus事件/focus委托,实际是一个事件/委托列表,比如click事件/button1click委托,button2click委托,button3click委托
集合EventHandlerSet用来保存控件的事件/委托对,通过Hashtable来实现,每个事件都有一个散列键,EventHandlerSet通过实现一个索引器来get/set事件的委托。
实际FCL中是通过System.ComponentModel.EventHandlerList来实现EventHandlerSet的功能,而且使用的不是Hash表,是链表。
- C#事件的学习体会
- C#泛型的学习体会
- 关于_beginthread()的学习体会
- SOMA的学习体会
- SPL的学习体会
- 使用tabbar的学习体会
- 2013年的学习体会
- struts2的简单学习体会
- android动画的学习体会
- 学习体会
- 学习体会
- 学习体会
- 学习体会
- 学习体会
- 学习体会
- 学习体会
- 学习体会
- 【c#第7次作业】学习体会
- java杂记
- DBA:在生产环境中创建监控表DML的触发器
- hdu 1086 You can Solve a Geometry Problem too
- H264简单描述(二)
- C#实现窗体控件随窗体大小改变(包括字体大小)
- C#事件的学习体会
- 常用的js 验证代码
- 获取某一月的天数 and 获取本周的周一
- 计算几何算法概览
- 微软高级流格式ASF简介
- 徐州简介
- sring 与hibernate的结合
- 针对Web系统常用的功能测试方法浅析
- 一定学会用Profile自定义配置文件