【C#】EventHandler委託詳解
阿新 • • 發佈:2019-02-09
MSDN的解釋:EventHandler即事件委託,表示用於處理不具有事件資料的事件的方法。
字面上理解就是一個事件處理器
,將一個事件與處理事件的方法聯絡起來的一種機制。
C++中通過函式指標來完成的。
在C#中的事件基於委託模型。委託模型遵守觀察者設計模式,使訂閱者(接收或處理事件的類)能夠向提供方(傳送或引發事件的類)註冊並接收相關通知。
步驟:
- 首先宣告一個委託,一般命名為:Name
EventHandler
// 這些委託沒有返回型別值,並且接受兩個引數(事件源的物件和事件資料的物件)。
public delegate void ThresholdReachedEventHandler (object sender, ThresholdReachedEventArgs e);
- 然後宣告一個事件,並指定事件的委託型別
// event關鍵字代表事件,返回型別為委託;
public event EventHandler 事件名;
- 同時,建立引發事件的方法,一般命名為:
On
EventName。
// 通常為了引發事件,會新增一個標記為protected和virtual的方法,以允許派生類重寫引發事件的邏輯。
protected virtual void OnThresholdReached(EventArgs e)
{
EventHandler handler = ThresholdReached;
if (handler != null)
{
handler(this, e);
}
}
- 再定義一個事件處理程式方法,處理事件。
static void c_ThresholdReached(object sender, EventArgs e)
{
Console.WriteLine("The threshold was reached.");
}
- 最後使用加法賦值運算子 (+=) 來為事件附加事件處理程式。
+=
表示新增事件,-=
表示刪除事件。
// Counter類中需要擁有一個名為ThresholdReached的事件
Counter c = new Counter();
c.ThresholdReached += c_ThresholdReached;
// 以下是老的C#1.0的語法
// c.ThresholdReached += new ThresholdReachedEventHandler(c_ThresholdReached);
this.Activated += new EventHandler(Form1_Activated);
這是一個委託的原理.
this.Activated=你吃完飯;
Form1_Activated=喊我一聲
這句話的意思就是把這兩個事放在一起了,意思就是叫你吃完飯了喊我一聲。我委託你吃完飯了,喊我一聲。這樣我就不用過一會就來看一下你吃完了沒有了,已經委託你了。