使用delegate类型设计自定义事件
生活随笔
收集整理的這篇文章主要介紹了
使用delegate类型设计自定义事件
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在C#編程中,除了Method和Property,任何Class都可以有自己的事件(Event)。
定義和使用自定義事件的步驟如下:
(1)在Class之外定義一個delegate類型,用于確定事件程序的接口
(2)在Class內部,聲明一個public event變量,類型為上一步驟定義的delegate類型
(3)在某個Method或者Property內部某處,觸發事件
(4)Client程序中使用+=操作符指定事件處理程序 例子:
????//?定義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)
????{
????????//?
????}
定義和使用自定義事件的步驟如下:
(1)在Class之外定義一個delegate類型,用于確定事件程序的接口
(2)在Class內部,聲明一個public event變量,類型為上一步驟定義的delegate類型
(3)在某個Method或者Property內部某處,觸發事件
(4)Client程序中使用+=操作符指定事件處理程序 例子:
例子:
????//?定義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)
????{
????????//?
????}
轉載于:https://www.cnblogs.com/miaomiaoga/archive/2004/11/14/63832.html
總結
以上是生活随笔為你收集整理的使用delegate类型设计自定义事件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第一天入住博客园
- 下一篇: 暑假学习日记2013/7/26