C#中事件的定義:
類或者對象可以通過事件向其他類或者對象通知發生的相關事情。發送(或引起)事件的類稱之為“發行者”,接收(或處理)事件的類稱為“訂戶”。
事件具有以下特點:
- 發行者確定時間引發事件,訂戶確定執行何種操作來響應該事件。
- 一個事件可以有多個訂戶。一個訂戶可處理來自多個發行者的多個事件。
- 沒有訂戶的事件永遠不會被調用。
- 事件通常用於通知用戶操作,例如,圖形用戶界面中的按鈕單擊或菜單選擇操作。
- 如果一個事件有多個訂戶,當引發該事件時,會同步調用多個事件處理程序。要異步調用事件,請參見使用異步方式調用同步方法。
- 可以利用事件同步線程。
在.NET Framework類庫中,事件是基於EventHandle和EventArgs基類的。
例如下面的代碼:
delegate void MyDele(string str) //定義委托
class Program
{
event MyDele MyEvent; //定義事件
static void Main(string[] args)
{
Program pro = new Program();
//訂閱方法
pro.MyEvent += new MyDele(pro.MyMethod);
pro.MyMethod("參數");
}
//定義委托方法
public void MyMethod(string str)
{
Console.WriteLine("方法參數為:" + str);
}
}
輸出結果:
方法參數為:參數1
總結:
C#中使用事件的要點
1 首先,要創建委托,格式為:
public delegate void 委托名(object sender,EventArgs e);
注意:委托即C里面的函數指針,在事件中由於要傳遞事件及觸發事件的對象信息,因此參數時固定的。委托名一般的格式是:名字+EventHandle。這樣比較規范。
2 然后建立一個事件字段:
public event 委托類型 事件名;
注意:event關鍵字代表事件,返回類型為委托;
3 再定義一個方法,處理事件
4 最后還要創建觸發事件的方法
在使用事件時,通常要定義兩個方法,一個是和事件定義的委托簽名一直的方法
綁定事件的方法很簡單,用+=表示添加事件,-=表示刪除事件
部分引用來自:http://wayfarer.cnblogs.com/archive/2004/04/20/6712.html