程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> C# 事件,

C# 事件,

編輯:關於.NET

C# 事件,



  下面的過程演示了如何將符合標准 .NET 模式的事件添加到您的類和結構中。  .NET類庫中的所有事件均基於 EventHandler 委托,定義如下:  

public delegate void EventHandler(object sender, EventArgs e);

  你可以嘗試手動輸入 EventHandler ,然後按下“F12”跳轉到定義:

.NET Framework 2.0 引入了此委托的一個泛型版本,即 EventHandler<TEventArgs>。

  【備注】雖然您定義的類中的事件可基於任何有效委托類型(甚至是可返回值的委托),但是,通常建議您使用 EventHandler 讓事件基於 .NET 模式,如下面的示例所示。

 

采用 EventHandler 模式發布事件

  1.(如果不需要與事件一起發送自定義數據,請跳過此步驟,進入步驟 3a。)在發行者類和訂閱方類均可看見的范圍中聲明自定義數據的類。  然後添加保留您的自定義事件數據所需的成員。  在此示例中,會返回一個簡單字符串。

1     class MyEventArgs : EventArgs
2     {
3         public string Message { get; private set; }
4 
5         public MyEventArgs(string message)
6         {
7             Message = message;
8         }
9     }

 

  2.(如果您使用的是 EventHandler<TEventArgs> 的泛型版本,請跳過此步驟。)在發布類中聲明一個委托。  為它指定以 EventHandler 結尾的名稱。  第二個參數指定自定義 EventArgs 類型。 

    delegate void MyEventHandler(object sender, MyEventArgs args);

 

  3.使用以下任一步驟,在發布類中聲明事件。

    (1)如果沒有自定義 EventArgs 類,事件類型就是非泛型 EventHandler 委托。無需聲明委托,因為它已在創建 C# 項目時包含的 System 命名空間中進行了聲明。將以下代碼添加到發行者類中。 

public event EventHandler MyEvent;

 

    (2)如果使用的是 EventHandler 的非泛型版本,並且您有一個由 EventArgs 派生的自定義類,請在發布類中聲明您的事件,並且將來自步驟 2 的委托用作類型。

public event MyEventHandler MyEvent;

 

    (3)如果使用的是泛型版本,則不需要自定義委托。  相反,在發行者類中,您應將事件類型指定為 EventHandler<MyEventArgs>,將尖括號中的內容替換為自己的類的名稱。  

public event EventHandler<MyEventArgs> MyEvent;

 

 

--預覽版,整理中

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved