如何使用事件

2021-09-05 20:59:44 字數 1692 閱讀 7022

事件有很多,比如說滑鼠的事件: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 中另一高階概念,使用方法和委託相關。奧運會參加百公尺的田徑運動員聽到槍聲,比賽立即進行。其中槍聲是事件,而運動員比賽就是這個事件發生後的動作。不參加該項比賽的人對槍聲沒有反應。從程式設計師的角度分析,當裁判員槍聲響起,發生了乙個事件,裁判員通知該事件發生,參加比賽的運動員仔細聽槍聲是否發生...