C#事件以及EventHandler、EventArgs


C#中事件的定義:

  類或者對象可以通過事件向其他類或者對象通知發生的相關事情。發送(或引起)事件的類稱之為“發行者”,接收(或處理)事件的類稱為“訂戶”。

事件具有以下特點:

  • 發行者確定時間引發事件,訂戶確定執行何種操作來響應該事件。
  • 一個事件可以有多個訂戶。一個訂戶可處理來自多個發行者的多個事件。
  • 沒有訂戶的事件永遠不會被調用。
  • 事件通常用於通知用戶操作,例如,圖形用戶界面中的按鈕單擊或菜單選擇操作。
  • 如果一個事件有多個訂戶,當引發該事件時,會同步調用多個事件處理程序。要異步調用事件,請參見使用異步方式調用同步方法。
  • 可以利用事件同步線程。

在.NET Framework類庫中,事件是基於EventHandleEventArgs基類的。

例如下面的代碼:

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM