二、事件
1.了解概念
事件就是當物件或類狀態發生改變時,物件或類發出的資訊或通知。發出資訊的物件或類稱為"事件源",對事件進行處理的方法稱為"接收者",通常事件源在發出狀態改變資訊時,它並不知道由哪個事件接收者來處理.這就需要一種管理機制來協調事件源和接收者,c++中通過函式指標來完成的.在c#中事件使用委託來為觸發時將呼叫的方法提供型別安全的封裝。
在介紹事件之前我們先來了解幾個事件的基本概念和幾個重要素:
--事件的本質
-事件是特殊的委託例項
-事件關鍵字:event
--事件的四個要素:
-定義事件
-激發事件
-監聽事件
-執行事件
2.事件分析
在.net中,很多控制項都有相關的事件,如button的click事件,它能響應滑鼠的單擊事件。
--定義事件
delegate
void
eventhandler(
object
sender,eventargs e);
public
event
eventhandler click;
--激發事件:單擊滑鼠
--監聽事件
this
.button1.click
+=new
eventhandler(
this
.button1_click);
--執行事件
void
button1_click(
object
sender,eventargs e)//}
上面這個button的click事件是我們最常見的,這裡展示出了整個事件過程。接下來我們來看看乙個簡單的事件例項。
3.簡單例項--怎樣定義乙個完整的事件機制
一.定義委託
//定義事件委託
public
delegate
void
changedeventhandler(
object
sender, eventargs e);
二.定義事件
//定義乙個委託型別事件
public
event
changedeventhandler changed;
三.觸發事件
//用於觸發changed事件
protected
virtual
void
onchanged(eventargs e)
四.偵聽事件
mytext mytext
=new
mytext();
mytext.changed
+=new
mytext.changedeventhandler(mytext_chenged);
五.事件處理程式
//事件處理程式
private
static
void
mytext_chenged(
object
sender, eventargs e)
", ((mytext)sender).text);
這就完成了乙個完整的事件機制,詳細**如下:
c 程式設計之委託 事件與執行緒
委託是乙個類,它定義了方法的型別,使得可以將方法當作另乙個方法的引數來進行傳遞,這種將方法動態地賦給引數的做法,可以避免在程式中大量使用if else switch 語句,同時使得程式具有更好的可擴充套件性。在c 中使用delegate關鍵字定義委託,然後使用我們熟悉的函式呼叫的語法來呼叫委託。pu...
C 委託與事件講解 二
什麼是事件?event?點選事件?載入事件?一連串的模糊的概念衝擊著我們弱小的腦袋 那我們首先來看一下比較正統的感念吧 事件是類在發生其關注的事情時用來提供通知的一種方式。事件的發生一般都牽扯2個角色 事件發行者 publisher 乙個事件的發行者,也稱作是傳送者 sender 其實就是個物件,這...
c 委託與事件
c 委託與事件 心得 c 用委託來實現事件通知機制。委託相當與c 函式指標。整個過程涉及乙個呼叫者,乙個被呼叫者,還有就是這個委託。實現步驟有以下幾步 1.申明委託,2.定義呼叫者和呼叫的函式,3.定義被呼叫者和具體實現的函式 被呼叫的函式 1.申明委託 在包裡或者類裡,public public ...