學習事件,我覺得最不好理解的就是c#中預定義了事件,事件有很多種,
比如說滑鼠的事件:mousermove,mouserdown等,
鍵盤的事件:keyup,keydown,keypress。
eventargs是包含事件資料的類的基類,用於傳遞事件的細節。
有事件,就會有對事件進行處理的方法,而事件和處理方法之間是怎麼聯絡起來的呢?委託就是他們中間的橋梁,事件發生時,委託會知道,然後將事件傳遞給處理方法,處理方法進行相應處理。
事件的型別一定是委託,委託為引發事件的類擔當事件傳送器的角色
eventhandler是乙個委託宣告如下(其在.net類庫中如下宣告的)
public delegate void eventhandler( object sender , eventargs e )
所以,所有形如:
void 函式名(object 引數名,eventargs 引數名);
的函式都可以作為control類的click事件響應方法了。如下面所定義的乙個事件響應方法:
private void button1_click(object sender, system.eventargs e)
引數object sender表示引發事件的物件,(其實這裡傳遞的是物件的引用,如果是button1的click事件則sender就是button1)system.eventargs e 代表事件的相應資訊,如滑鼠的x,y值等。
下面我們研究一下button類看看其中的事件宣告,以click事件為例。
public event eventhandler click;
這裡定義了乙個eventhandler型別的事件click
private void button1_click(object sender, system.eventargs e)
這是我們和button1_click事件所對應的方法。注意方法的引數符合委託中的簽名(既引數列表)。那我們怎麼把這個方法和事件聯絡起來呢,請看下面的**。
this.button1.click += new system.eventhandler(this.button1_click);
(按按鈕後就會出發button1_click方法進行處理。eventhandler就是系統類庫里已經宣告的乙個委託。其實button1.click 為system.eventhandler委託的例項事件。與委託中委託例項委託給某一方法非常相似)把this.button1_click方法繫結到this.button1.click事件。
委託類eventhandler已經在系統中這樣宣告了!
public delegate void eventhandler(object sender,eventargs e);
需要的時候直接呼叫就可以了!使用+=操作符來引用乙個相匹配的方法
jquery 事件繫結處理方式
jquery 事件繫結的幾種方式 click,blind,live,delegate,on click 效率太慢 淘汰。blind 沒有動態繫結功能 live是把事件繫結到document 上 迴圈所有元素 通過冒泡 找到指定元素 執行事件處理,table tr live click functio...
怎樣正確觸發預定義事件?
今天發現在竟然不知道怎麼觸發預定義事件,怎麼弄都出錯。跟自定義的事件的觸發完全不是同一回事情,鬱悶中。預定義事件 protected system.web.ui.webcontrols.button button1 protected system.web.ui.webcontrols.datagr...
C 事件處理和自定義事件
本文分析了c 中事件處理並且舉例自定義事件。首先我們需要定義乙個類來監聽客戶端事件,這裡我們監聽鍵盤的輸入。c 事件處理 了解c 中的預定義事件處理機制 在寫 前我們先來熟悉.net框架中和事件有關的類和委託,了解c 中預定義事件的處理。eventargs是包含事件資料的類的基類,用於傳遞事件的細節...