通常C#自定義事件有下面的幾個(gè)步驟:
1、聲明一個(gè)delegate: (用于事件的類(lèi)型的定義)
如:
- public delegate void 事件名稱(chēng)EventHandler(object serder, EventArgs e);
//事件名稱(chēng)用你的自己的來(lái)代替,隨后的EventHandler是C#的建議命名規范,當然如果你不想遵守,可以使用任何字符甚至可以不要。
如果你想自定義事件的參數EventArgs,你可以從這個(gè)類(lèi)派生你自己的事件參數類(lèi),然后在delegate的聲明中,用你的參數類(lèi)替換 EventArgs
注:要全面了解自定義事件的原理,你需要學(xué)習有關(guān)delegate的知識。
2、在你的類(lèi)中聲明一個(gè)事件,并且使用步驟1的delegate作為事件的類(lèi)型:
- public event 事件名稱(chēng)EventHandler 事件名稱(chēng);
3、在你的類(lèi)中需要觸發(fā)事件的方法中,添加事件觸發(fā)代碼:
- 事件名稱(chēng)(this, new EventArgs());
或者:
- if(事件名稱(chēng)!=null)
- 事件名稱(chēng)(this, new EventArgs());
//如果使用你自己的事件參數類(lèi),你可以用你的參數類(lèi)事例替換new EventArgs(), 同時(shí)在你的參數類(lèi)中保存你需要傳遞的數據。
4、C#自定義事件注冊:
事件注冊和普通的事件注冊沒(méi)有不同,也就是說(shuō)如果一個(gè)外部的對象在你的事件被觸發(fā)的時(shí)候需要作出響應,那么你可以在外部了構造器中(或者適當的地 方)對事件進(jìn)行注冊
- 帶有事件的類(lèi)實(shí)例.事件名稱(chēng)+= new 事件名稱(chēng)EventHandler( 事件處理方法名稱(chēng));
5、編寫(xiě)事件處理方法:
- public void 事件處理方法名稱(chēng)(object sender, EventArgs e)
- {
- //添加你的代碼
- }
注:如果你在類(lèi)中處理自己的觸發(fā)事件,你可以選擇C#自定義事件步驟4和5的方式,也就是注冊自己,也可以在觸發(fā)事件代碼中直接調用事件處理方法
聯(lián)系客服