DOTNET事件處理的步驟與實現
第一步:定義一個合適的委托
例:
delegate void MoveEventHandler(Object Sender,MoveEventArgs e)
注意:DotNet框架中的標准委托的定義如下:
Public delegate void EventHabdler(Object Sender,EventArgs e)
參數說明:
(1)Sender:表示消息的發送方;
(2)EventArgs:默認的消息處理類(不含附加數據)
(3)強烈建議使用標准的委托定義事件
第二步:定義一個合適的消息
由於標准的EventArgs類不包含附加數據,可繼承此類,使該類包含與特定時間相關的信息,
如: Public class MoveEventArgs
{ Public int newPosition;
Public MoveEventArgs(int newPosition)
{
this.newPosition = newPosition
}
}
第三步:發送方聲明事件並設置激發事件的代碼
聲明事件:Public event 委托類型與事件標識
必須使用Public聲明事件,否則接收方就不能登記事件處理器,激發一個事件的代碼如下:
if (事件標識 != null)
{
MoveEventArgs args = new MoveEventArgs(value1);
}
事件標識(this,args)(注意:次事件為dotnet標准事件)
另:建議直接使用標准系統委托 EventHandler
發送消息 MyEvent(this.args);
Public event EventHandler MyEvent;
聲明一個事件變量
第四步:接收方登記事件處理器
事件處理器也是一種委托,將接收方要完成的功能加入到事件處理器,實現委托與事件的掛鉤,一旦接收方收到發送的消息後,將立即執行該方法,實現功能。
Sender s1 = new Sender();聲明一個發送方實例
s1.事件標識 += new定義的委托(要實現的功能代碼)
將事件與要實現的功能掛鉤。
第五步:等待事件的發生
注意:接收方只能處理登記完成了事件處理器後的事件,對於在事件處理器之前就發生的事件,接收方並不能處理。