控件中的Events个人理解。
生活随笔
收集整理的這篇文章主要介紹了
控件中的Events个人理解。
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
首先,了解一下與事件和委托有關的幾個類和屬性:
Delegate, MulticastDelegate, EventHandler, EventHandlerList, EventHandlerList.ListEntry, Control, Component
Control的Events屬性是由System.ComponentModel.Component 繼承而來,它是EventHandlerList的實例.
??????public?void?RemoveHandler(object?key,?Delegate?value);
??????private?ListEntry?Find(object?key);
示例:我們要為當前控件添加一個點擊事件(Click).
第一步:創建一個靜態只讀的屬性
public static readonly object ClickEvent=new object();? //它是以后事件查找委托的鍵(key),
第二步:注冊事件
public event EventHandler Click
{
?? add
?? {
?????? base.Events.AddHandler(ClickEvent,value);
?? }
?? remove
? {?
??? base.Events.RemoveHandler(ClickEvent,value);
?? }
}
----
以下是Events的定義:
private?EventHandlerList?events;
protected?EventHandlerList?Events
{
??????get
??????{
????????????if?(this.events?==?null)
????????????{
??????????????????this.events?=?new?EventHandlerList();
????????????}
????????????return?this.events;
??????}
}
Delegate, MulticastDelegate, EventHandler, EventHandlerList, EventHandlerList.ListEntry, Control, Component
Control的Events屬性是由System.ComponentModel.Component 繼承而來,它是EventHandlerList的實例.
EventHandlerList類有三個重要的方法:
??????public?void?AddHandler(object?key,?Delegate?value);??????public?void?RemoveHandler(object?key,?Delegate?value);
??????private?ListEntry?Find(object?key);
示例:我們要為當前控件添加一個點擊事件(Click).
第一步:創建一個靜態只讀的屬性
public static readonly object ClickEvent=new object();? //它是以后事件查找委托的鍵(key),
第二步:注冊事件
public event EventHandler Click
{
?? add
?? {
?????? base.Events.AddHandler(ClickEvent,value);
?? }
?? remove
? {?
??? base.Events.RemoveHandler(ClickEvent,value);
?? }
}
----
以下是Events的定義:
private?EventHandlerList?events;
protected?EventHandlerList?Events
{
??????get
??????{
????????????if?(this.events?==?null)
????????????{
??????????????????this.events?=?new?EventHandlerList();
????????????}
????????????return?this.events;
??????}
}
轉載于:https://www.cnblogs.com/McJeremy/archive/2008/06/12/1218263.html
總結
以上是生活随笔為你收集整理的控件中的Events个人理解。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一级建造师挂多少钱啊?
- 下一篇: ManualResetEvent用法