網上有很多關於事件是如何實現的,但看來看去都不是很明了。
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的組裝 包裝和運輸的工作全部委...