委託與事件

2022-04-03 17:50:12 字數 1609 閱讀 7601

利用委託來實現滑鼠三擊效果。使用者控制項

using

system;

using

system.collections.generic;

using

system.componentmodel;

using

system.drawing;

using

system.data;

using

system.linq;

using

system.text;

using

system.windows.forms;

namespace

private

void button1_click(object

sender, eventargs e)

clickcount = 0

; }}}

}

然後

namespace

void

onsanqian1()

void

onsanqian2()

}}

這樣就初步實現了滑鼠三擊的事件大概樣子。但是這樣是有問題的,把委託作為字段放進類裡面,我們知道欄位在任何情況下都不可以宣告為public,這樣是不安全的,我甚至可以直接把委託賦值為null或者直接偽造事件onsanqiang()。所以我們要把字段宣告為private,然後來乙個public方法傳遞。

private

sanqiangdelegate onsanqiang;

//委託宣告為private,這樣外界就無法=null或者onsanqiang()偽造事件

//外界只能呼叫addsanqiang新增監聽

public

void

addsanqiang(sanqiangdelegate d)

到這裡已經類似於「屬性」的演變方式了。因為到這裡微軟提供了簡化的寫法,稱之為事件。

private

sanqiandelegate onsanqiang;

public

event

sanqiandelegate onsanqiangsj

////宣告事件的標準語法

////event 委託型別 事件名

////事件成員可以用+=、-=呼叫add、remove方法

remove

}//add remove最終也是編譯生成兩個方法

////

當使用者sanqiangbutton1.onsanqiang += _sanqiang1新增監聽的時候

////

就會呼叫add方法,value就是新增的委託

然後喜聞樂見就又給簡化成一句話。

public

event sanqiangdelegate onsanqiang;

//微軟提供的簡化寫法。

//編譯器自動生成乙個private 委託成員和add、remove方法

//和簡寫的屬性微軟做的事情一樣

//和public sanqiangdelegate onsanqiang;不一樣

委託與事件

1.建立乙個類,分別建立加 減 乘 除四個方法,通過委託和事件,實現 輸入兩個計算數,完成所有的四個方法的呼叫,計算出結果顯示。建立乙個警察 policeman 類,乙個小偷 thief 類,例項化兩個類的物件,當policeman類中警笛鳴響 alarm 方法執行時,觸發小偷逃跑 runaway ...

委託與事件

委託就是以方法做引數進行傳遞,它定義的是方法的框架,如果用這個委託,所宣告的方法就必須按照給定的引數及返滬型別進行處理。宣告委託的方式 delegate 返回值型別 委託型別名 引數 比如delegate void stringprocess string s 注意這裡的除了前面的delegate,...

委託與事件

委託與事件 一 委託 delegate 1 委託是一種可以把引用儲存為函式的型別。2 在定義了委託後,就可以宣告該委託型別的變數,接著把這個變數初始化為與委託有相同返回型別和引數類別的函式引用,之後,就可以使用委託變數呼叫這個函式,就像該變數是乙個函式一樣。如 double multiply dou...