使用Delegate類(lèi)型設(shè)計(jì)自定義事件
作者:羅會(huì)濤
在C#編程中,除了Method和Property,任何Class都可以有自己的事件(Event)。定義和使用自定義事件的步驟如下:
(1)在Class之外定義一個(gè)delegate類(lèi)型,用于確定事件程序的接口
(2)在Class內(nèi)部,聲明一個(gè)public event變量,類(lèi)型為上一步驟定義的delegate類(lèi)型
(3)在某個(gè)Method或者Property內(nèi)部某處,觸發(fā)事件
(4)Client程序中使用+=操作符指定事件處理程序
例子:
- // 定義Delegate類(lèi)型,約束事件程序的參數(shù)
- public delegate void MyEventHandler(object sender, long lineNumber) ;
- public class DataImports
- {
- // 定義新事件NewLineRead
- public event MyEventHandler NewLineRead ;
- public void ImportData()
- {
- long i = 0 ; // 事件參數(shù)
- while()
- {
- i++ ;
- // 觸發(fā)事件
- if( NewLineRead != null ) NewLineRead(this, i);
- //...
- }
- //...
- }
- //...
- }
- // 以下為Client代碼
- private void CallMethod()
- {
- // 聲明Class變量,不需要WithEvents
- private DataImports _da = null;
- // 指定事件處理程序
- _da.NewLineRead += new MyEventHandler(this.DA_EnterNewLine) ;
- // 調(diào)用Class方法,途中會(huì)觸發(fā)事件
- _da.ImportData();
- }
- // 事件處理程序
- private void DA_EnterNewLine(object sender, long lineNumber)
- {
- // ...
- }


