EventHandlerList 学习

 EventCollection

如果在单个控件中有多个事件,那么使用System.ComponentModel.EventHandlerList对事件进行保存将会在内存占用上有不错的提高。EventHandlerList对一个类内发布多个事件提供了一个列表容器。下面是多个事件和使用EventHandlerList的对比示意:
9-1.jpg

 (汗这图看不懂什么意思)

第一步是实例化一个EventHandlerList的实例: 

第二步是声明一个容器用于保存事件的key : private static readonly object ClickEvent = new object();

最后一步是像往常一样声明一个事件,但有所不同的是就像属性的get和set程序块一样,对于事件C#提供了add和remove关键字:


public event EventHandler Click


{
add{

Events.AddHandler(ClickEvent, value);



}



remove



{



Events.RemoveHandler(ClickEvent, value);



}


}


而在这时的事件调用方法就会像下面代码:


protected virtual void OnClick(EventArgs e)


{



EventHandler clickEventDelegate = (EventHandler)Events[ClickEvent];



if (clickEventDelegate != null)



{



clickEventDelegate(this, e);



}


}


上面代码首先从事件列表中通过索引器以第一步中保存事件的key为参数提取出事件并检查客户端是否注册到此事件,如果是,则激发事件。引用自:http://blog.sina.com.cn/s/blog_60664d670100hkku.html

转载于:https://www.cnblogs.com/tutuzhang/archive/2011/04/08/2008907.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值