在C#編程中,除了方法(Method)和屬性(Property),任何類(Class)都可以有自己的事件(Event)。定義和使用自定義事件的步驟如下:
1)在Class之外定義一個delegate類型,用于確定事件程序的接口;
2)在Class內部,聲明一個public event變量,類型為上一步驟中定義的delegate類型;
3)在某個方法(Method)或者屬性(Property)內部某處觸發事件;
4)客戶程序中使用+=操作符指定事件處理程序。
下面用一個具體的例子來說明這個問題:
// 定義Delegate類型,約束事件程序的參數
public delegate void MyEventHandler(object sender, long lineNumber) ;
public class DataImports
{
// 定義新事件NewLineRead
public event MyEventHandler NewLineRead ;
public void ImportData()
{
long i = 0 ; // 事件參數
while()
{
i++ ;
// 觸發事件
if( NewLineRead != null ) NewLineRead(this, i);
//...
}
//...
}
//...
}
// 以下為Client代碼
private void CallMethod()
{
// 聲明Class變量,不需要WithEvents
private DataImports _da = null;
// 指定事件處理程序
_da.NewLineRead += new MyEventHandler(this.DA_EnterNewLine) ;
// 調用Class方法,途中會觸發事件
_da.ImportData();
}
// 事件處理程序
private void DA_EnterNewLine(object sender, long lineNumber)
{
// ...
}
新聞熱點
疑難解答