如何理解和實現c 事件

2022-05-05 04:03:13 字數 1982 閱讀 5787

網上有很多關於事件是如何實現的,但看來看去都不是很明了。

step 1 什麼是事件

究竟什麼是事件呢?想到事件,就讓我想到911. 記得那段事件大家都在談911事件。什麼是911事件呢?就是飛機撞大樓這個動作導致了911事件的產生。但在c#中又如何理解呢。其實所謂事件,就是由某個物件發出的訊息,這個訊息標誌著某個特定的行為發生了,或者某個特定的條件成立了。比如使用者點選了滑鼠,這一單擊就會引起windows給按鈕訊息處理程式傳送乙個訊息,這就是onclick事件。那個觸發(raise)事件的物件稱為事件的傳送者(event sender),捕獲並響應事件的物件稱為事件的接收者(event receiver)。在winform裡面,這個傳送者就是我們單擊的那個按鈕,響應者或者叫接收者就是winform窗體。

下面就用winform和button來舉例子

step 2 定義button類

button

1using

system;23

namespace

eventhandler431

set32}33

///34

///當「按鈕」被click了

35///

36public

void

onclick()

3747}48

}49}50

step 3定義引數類

neweventargs

1using

system;23

namespace

eventhandler414

set15}16

}17}step 4 定義winform類

winform

1using

system;

2using

system.collections.generic;

3using

system.text;

4using

system.collections;56

namespace

eventhandler722

23///

24///

用initcomponent模仿winform的initializecomponent

25///

在windows應用程式中,它是在乙個form的partial類裡實現的

26///

27public

void

initcomponent()

2842

43///

44///

button的單擊事件

45///

46///

傳送者物件,這裡指button

47///

引數物件繼承eventargs

48protected

void

btnclick(

object

sender, neweventargs e)

4954

console.writeline(e.objectname);55}

56}57}

step 5 執行測試

test

1using

system;23

namespace

eventhandler415

console.read();16}

17}18}

19step 6 小結

測試結果:

button

first button

button

second button

現在覺得event其實就這樣,關鍵是理解委託的概念,這裡的button1.click += new onclickeventhandler(btnclick);和button2.click += new onclickeventhandler(btnclick);其實就是委託例項而已。其次要了解事件sender物件和receiver之間的關係。

最後希望能和大家共同**技術問題。

參考:

如何理解c 委託和事件

有很多同學在學習c 的委託和事件時,都一頭霧水,有的不理解委託和事件到底是什麼東西,有的理解了概念,但不知道在什麼場景中應該應用委託和事件,今天我們就一起總結下委託和事件的知識點 委託 我們先從字面上理解委託,就是將事情託付給別人做,而非自己親自做,自己只負責通知。巨集觀上來看,委託就是一種通知機制...

C 如何實現介面事件

在類中宣告事件,然後在相應區域中呼叫它。namespace implementinte ceevents public class myeventargs eventargs public class shape idrawingobject protected virtual void onsha...

理解C 事件

如果做過gui程式開發,可能對上面的描述會比較熟悉。在gui程式中,單擊乙個button會觸發乙個click事件,然後會執行一系列的操作,這一系列的操作就被存放在乙個委託例項中。接下來我們就看看事件。使用委託中的問題 回到前面文章中蘋果和富士康的例子,蘋果將iphone的組裝 包裝和運輸的工作全部委...