通常C#自訂事件有下面的幾個步驟:
1、聲明一個delegate: (用於事件的類型的定義)
如:
- public delegate void 事件名稱EventHandler(object serder, EventArgs e);
//事件名稱用你的自己的來代替,隨後的EventHandler是C#的建議命名規範,當然如果你不想遵守,可以使用任何字元甚至可以不要。
如果你想自訂事件的參數EventArgs,你可以從這個類派生你自己的事件參數類,然後在delegate的聲明中,用你的參數類替換EventArgs
註:要全面瞭解自訂事件的原理,你需要學習有關delegate的知識。
2、在你的類中聲明一個事件,並且使用步驟1的delegate作為事件的類型:
- public event 事件名稱EventHandler 事件名稱;
3、在你的類中需要觸發事件的方法中,添加事件觸發代碼:
- 事件名稱(this, new EventArgs());
或者:
- if(事件名稱!=null)
- 事件名稱(this, new EventArgs());
//如果使用你自己的事件參數類,你可以用你的參數類案例替換new EventArgs(), 同時在你的參數類中儲存你需要傳遞的資料。
4、C#自訂事件註冊:
事件註冊和普通的事件註冊沒有不同,也就是說如果一個外部的對象在你的事件被觸發的時候需要作出響應,那麼你可以在外部了構造器中(或者適當的地方)對事件進行註冊
- 帶有事件的類執行個體.事件名稱+= new 事件名稱EventHandler( 事件處理方法名稱);
5、編寫事件處理方法:
- public void 事件處理方法名稱(object sender, EventArgs e)
- {
- //添加你的代碼
- }
註:如果你在類中處理自己的觸發事件,你可以選擇C#自訂事件步驟4和5的方式,也就是註冊自己,也可以在觸發事件代碼中直接呼叫事件處理方法。
【編輯精選】
- C#自訂控制項的開發:Pin和Connector
- 比較C#自訂控制項的property(屬性)和/attribute(性質)
- C#組件開發:COM和.NET對象之間的互操作
- 介紹.NET平台、C#和ASP.NET
- C# Attributes:定義設計期資訊