C 中事件原理

2021-05-17 19:36:55 字數 1248 閱讀 1410

windows中的原理如下,其中有三個部分:第一部分,事件源即事件的發生地就是觸發事件的控制項;第二部分,訂閱器即事件的處理程式,用函式實現;第三部分,事件源和事件處理程式間的通訊即訊息。其中訂閱就是編寫響應**,訂閱器就是事件處理程式方法。下面程式實現當發生鍵盤輸入事件後,有系統作出響應在螢幕上輸出:「message arrived: 」加上輸入的字串。

using

system;

using

system.timers;

using

system.collections.generic;

using

system.windows.forms;

//事件源,觸發事件的地方

namespace

test}}

}//事件的處理程式

namespace

test

",msg);}}

}//測試**

namespace

test}}

這個程式中訊息很簡單就是string字串,首先我們先來看事件源部分,這兒我們先定義了乙個公有的委託型別,指定了事件處理方法必須遵循的方法的簽名,接著定義了乙個用於觸發事件的connection類,這個類很簡單,只有乙個公有的事件和乙個connect方法,其中共有的事件messagehandle就是這個類將要觸發的事件,connect方法的功能是死迴圈一直要求從鍵盤輸入,然後對鍵盤輸入的內容進行判斷,當輸入的字串是「end」是結束迴圈,否則觸發事件msgarrived其中訊息就是從鍵盤上得到的字串。

第二部分,就是事件的處理程式,這部分就是我們在windows程式設計中經常要自己編寫**的地方,在這兒定義乙個用於顯示的display類,這個類更簡單只有乙個displaymsg方法注意此方法和前面我們定義的委託型別的簽名一致,這個方法就是把我們的到資訊簡單的在前面加上「message arrived :」就表示已經處理過了,輸出到螢幕上。

最後我們看一下,測試**,首先例項化了connection和display的例項化物件,接著是很重要的一步,用new例項化乙個委託型別messagehandle的物件,然後把這個物件註冊到connection的物件myconn的事件屬性msgarrived上,這樣當myconn物件觸發了事件後就會自動地執行此事件,即呼叫委託的**;而msgarrived屬性是委託型別的例項他必須要和乙個方法相聯絡,在例項化是就是用mydis.displaymsg來初始化他的,也就是當呼叫委託**,其實呼叫的是display類的displaymsg方法。

到此,事件也就全部實現了。

C 中的事件

目錄 介紹委託和事件 宣告事件 定義事件 註冊事件 實現事件 觸發事件 為事件增加 新增 刪除 方法 一 介紹委託和事件 事件是特殊化的委託,委託是事件的基礎,所以在介紹事件之前先介紹一下委託。委託 使用委託可以將方法應用 不是方法 封裝在委託物件內,然後將委託物件傳遞給呼叫方法的 這樣編譯的時候 ...

c 中的事件

說到了委託,現在就來說說事件吧,其實事件就是一種特殊的委託。有事件,就會有對事件進行處理的方法,而事件和處理方法之間是怎麼聯絡起來的呢?委託就是他們中間的橋梁,事件發生時,委託會知道,然後將事件傳遞給處理方法,處理方法進行相應處理。比如,在winform中最常見的是按鈕的click事件,它是這樣委託...

C 中的事件

目錄 介紹委託和 事件宣告 事件 定義 事件 註冊事件 實現事件 觸發事件 為事件增加 新增 刪除 方法 一 介紹委託和 事件事件是特殊化的委託,委託是 事件的基礎,所以在介紹 事件之前先介紹一下委託。委託 使用委託可以將方法應用 不是方法 封裝在委託物件內,然後將委託物件傳遞給呼叫方法的 這樣編譯...