事件有很多,比如說滑鼠的事件:mousermove,mouserdown等,鍵盤的事件:keyup,keydown,keypress。
有事件,就會有對事件進行處理的方法,而事件和處理方法之間是怎麼聯絡起來的呢?委託就是他們中間的橋梁,事件發生時,委託會知道,然後將事件傳遞給處理方法,處理方法進行相應處理。
比如在winform中最常見的是按鈕的click事件,它是這樣委託的:this.button1.click += new system.eventhandler(this.button1_click);按按鈕後就會出發button1_click方法進行處理。eventhandler就是系統類庫里已經宣告的乙個委託。
eventhandler以及其它自定義的事件委託都是一類特殊的委託,他們有相同的形式:
delegate void 事件委託名(object sender,eventargs e);
object用來傳遞事件的發生者,比如二中的button控制項就是乙個事件發生者;eventargs用來傳遞事件的細節。
示例:using
system;
namespace
eventdemo
private
static
void
c1_onuserrequest(
object
sender, eventargs e)}//
定義委託
public
delegate
void
userrequest(
object
sender,eventargs e);
//////
事件傳送類
///public
class
eventsender
//定義乙個委託型別的事件
public
event
userrequest onuserrequest;
public
void
run()}}
}}
帶事件資料的事件示例:
using
system;
namespace
eventdemo
private
static
void
c1_onuserrequest(
object
sender, onuserrequesteventargs e)}//
定義委託
public
delegate
void
userrequest(
object
sender,onuserrequesteventargs e);
//////
帶事件資料的事件類,從eventargs繼承
///public
class
onuserrequesteventargs : system.eventargs
set}
}///
///事件傳送類
///public
class
eventsender
//定義乙個委託型別的事件
public
event
userrequest onuserrequest;
public
void
run()}}
}}
C 事件 使用事件需要的步驟
事件是c 中另一高階概念,使用方法和委託相關。奧運會參加百公尺的田徑運動員聽到槍聲,比賽立即進行。其中槍聲是事件,而運動員比賽就是這個事件發生後的動作。不參加該項比賽的人對槍聲沒有反應。從程式設計師的角度分析,當裁判員槍聲響起,發生了乙個事件,裁判員通知該事件發生,參加比賽的運動員仔細聽槍聲是否發生...
使用事件響應鏈處理事件
我們可以借用responder chain實現了乙個自己的事件傳遞鏈。uiresponder的分類 h檔案 import inte ce uiresponder router void routereventwithname nsstring eventname userinfo nsdiction...
C 事件 使用事件需要的步驟
事件是c 中另一高階概念,使用方法和委託相關。奧運會參加百公尺的田徑運動員聽到槍聲,比賽立即進行。其中槍聲是事件,而運動員比賽就是這個事件發生後的動作。不參加該項比賽的人對槍聲沒有反應。從程式設計師的角度分析,當裁判員槍聲響起,發生了乙個事件,裁判員通知該事件發生,參加比賽的運動員仔細聽槍聲是否發生...