在C#中創(chuàng)建和使用事件的步驟
1. 為事件創(chuàng)建一個委托類型
所有事件是通過委托來激活的,其返回值類型一般為void型。為事件創(chuàng)建一個委托類型的語法格式如下:
delegate void 委托類型名([觸發(fā)事件的對象名,事件參數(shù)]);
例如,以下語句創(chuàng)建一個委托類型mydelegate,其委托的事件處理方法返回類型為void,不帶任何參數(shù):
public delegate void mydelegate();
2. 創(chuàng)建事件處理的方法
當事件觸發(fā)時要調(diào)用事件處理方法,需設計相應的事件處理方法,可以將它放在單獨的類中,也可以放在觸發(fā)事件的類中。
例如,以下設計一個包含事件處理方法的單獨類
class MyEventHander
{ public void OnHandler1()
{
Console.WriteLine("調(diào)用OnHandler1方法");
}
}
3. 聲明事件
事件是類成員,以關鍵字event聲明,其一般語法格式如下:
[修飾符] event 委托類型名 事件名;
其中,“修飾符”指出類的用戶訪問事件的方式,可以為public 、private、protected、internal、protectedinternal、static或virtual等。
一般在聲明事件的類中包含觸發(fā)事件的方法。例如,以下MyEvent類包含事件聲明和觸發(fā)該事件的方法:
MyEvent //事件類
{ public event mydelegate1 Event1; //聲明事件
public void FireEvent1() //調(diào)用這個方法來觸發(fā)事件Event1
{ if(Event1 != null)
{
Event1(); //Event1事件發(fā)生
}
}
}
4. 通過委托對象來調(diào)用被包含的方法
向類事件(列表)中添加事件處理方法中的一個委托,這個過程稱為訂閱事件,這個過程通常是在主程序中進行的,首先必須聲明一個包含事件的類的對象,然后將事件處理方法和該對象關聯(lián)起來,其格式如下:
事件類對象名.事件名+=new 委托類型名(事件處理方法);
其中,還可以使用“-=”、“+”、“-”等運算符添加或刪除事件處理方法。最后調(diào)用觸發(fā)事件的方法便可觸發(fā)事件。
例如,以下語句就是觸發(fā)前面創(chuàng)建的事件Event1,并在屏幕上顯示“調(diào)用OnHandler1方法”:
MyEvent b = new MyEvent();
MyEventHander a = new MyEventHander();
b.Event1 += new mydelegate1(a.OnHandler1);
//把方法OnHandler1添加到事件列表中
b.FireEvent1(); //調(diào)用觸發(fā)事件的方法
點擊加載更多評論>>