c 自定義事件和委託

2022-05-01 07:24:08 字數 1953 閱讀 9003

在windows 程式設計中用到最多的就是控制項的時間了,微軟給我們很好的方式,把注意力放到事件執行方法的設計和編碼上,但是但我們真正弄懂了事件的真正出發執行原理的話,對我們的程式設計的提高真是非常榜的,例如在windows程式設計中 如果我單擊了乙個button按鈕觸發了button 的click事件  button1_click(){}  , 但是有時候我們程式設計的時候,不但想要觸發button 的單擊事件,我還想要把其他的時間也要呼叫下來順序執行,要實現這種方式,除了在方法最後對其他方法的呼叫,還可以利用將其他需要順序執行的方法封裝到button的click 事件的委託物件中,這樣就能夠順序執行毀掉方法列表中的程式了,而這種方式的實現是以清楚事件觸發和委託的呼叫為前提的。

事件是類和物件向外界發出的訊息,事件的執行是通過事件委託的方式,呼叫我們所準備好的處理方法,而是先訊息的響應的。要響應某些事件並針對某些事件執行我們意定的方法,需要做到以下幾步:

1、宣告事件委託。

2、宣告事件。

3、新增事件的觸發方法。

4、新增事件的處理程式(響應事件的方法)。

5、將指定的事件處理程式邦定到要處理的事件上(訂閱事件)。

6、使用者資訊操作,並觸發事件(呼叫事件的觸發方法)。

7、通過事件委託的**,執行我們需要的事件處理程式。

下面我們舉乙個簡單的自定義事件處理程式的例子(控制台程式)

namespace 事件

}//定義delegate

public delegate void testeventhandler(object sender, testeventargs e);

//用event 關鍵字宣告事件物件

public event testeventhandler testevent;

//事件觸發方法

protected virtual void ontestevent(testeventargs e)

//引發事件

public void raiseevent(char keytoraiseevent)

}//監聽事件的類

public class testeventlistener

,所按得健為:", sender, e.keytoraiseevent);

}//訂閱事件

public void subscribe(testeventsource evensource)

//取消訂閱事件

public void unsubscribe(testeventsource evensource)

}//測試類

public class test}}

程式執行結

訂閱事件

輸入乙個字元,再按enter鍵

aaaa

傳送者:事件.testeventsource,所按得健為:a

取消訂閱事件

輸入乙個字元,再按enter健

testeventsource類。他就相當於windows控制項類一樣,是事件的源,裡面包含有事件的宣告,以及儲存呼叫引數的事件引數類,以及事件的觸發方法。       

testeventlistener類。他提供了事件處理程式,並實現了事件處理程式和事件物件的邦定,當然時間處理程式可以放在別處, 跟邦定程式(訂閱事件)放在一起便於理解和呼叫

test 類,例項化自定義事件的事件源物件,並呼叫 testeventlistener類中的subscribe(es);方法進行事件物件和事件處理程式的邦定(訂閱事件),呼叫 testeventsource類中的raiseevent(char keytoraiseevent)引發物件,並有物件所指定的委託**處理事件。完成整個自定義事件。

其中   raiseevent(char keytoraiseevent)      就相當於main()一樣是自定義事件的執行入口,       從這個法開始---〉呼叫事件委託----〉查詢訂閱事件程式找到事件所封裝的方法集----〉由委託**事件處理程式並傳遞引數---〉執行事件處理程式。

引用自 :

C 委託和自定義事件

委託 相當於c 中的 函式指標 委託必須與所要 指向 的函式在 引數 和 返回型別 上保持一致 定義person類 public class person 定義委託 public delegate string dele speak string str class program 定義person...

C 中自定義事件和委託例項

在windows 程式設計中用到最多的就是控制項的事件了,微軟給我們很好的方式,把注意力放到事件執行方法的設計和編碼上,但是但我們真正弄懂了事件的真正出發執行原理的話,對我們的程式設計的提高真是非常榜的,例如在windows程式設計中 如果我單擊了乙個button按鈕觸發了button 的click...

C 委託 事件 自定義事件的理解

一 委託 委託類似於函式指標,但函式指標只能引用靜態方法,而委託既能引用靜態方法,也能引用例項方法。委託使用分三步 1 委託宣告。2 委託例項化。3 委託呼叫。例程一 using system namespace 委託 private int add int num1,int num2 例中,委託n...