事件與委託例項

2022-02-11 12:36:23 字數 2690 閱讀 3502

委託的語法和方法比較相似,只是比方法多了乙個關鍵字delegate ,我們都知道方法就是將型別引數化,所謂的型別引數化就是說該方法接受乙個引數,而該引數是某種型別的引數,比如int、string等等;而委託是將方 法引數化,說了上面的那個型別引數化之後,相信你也能猜到方法引數化的意思了,對,就是將方法作為乙個引數傳到乙個委託中。

首先來看看宣告委託的語句:

public deletate void mydelegate();

public:訪問修飾符 delegate:關鍵字 void:返回型別 mydelegate:委託名稱 ( ):引數列表.

事件就是乙個特殊的委託,委託和事件就類似於字段和屬性的關係,事件是對委託做了乙個封裝(這是個人理解)

先看看宣告乙個事件:

public event mydelegate eventmydel;

public:訪問修飾符 event:關鍵字 mydelegate:委託 eventmydel:事件名稱

一、定義乙個訂閱者:

public

class

publishser

return

rtn;}}

二、定義乙個監督者:

public

class

subscriber1

}

三、定義執行者:

public

partial

class

form1 : form

private

void form1_load(object

sender, eventargs e)

public

string

getnumberchanged()

}

view code

備註: 委託名:generaleventhandler;事件名去掉handler:generalevent;調閱方法名:(事件前面加上on):ongeneralevent

令附一例項:**:

在c# winform的日常開發中,我們通常需要遇到跨窗體傳值這一問題,實現的方式也是有很多的,今天給大家分享一種通過委託和事件來實現的傳值方式。不多說廢話,我將用乙個具體的例項來跟大家說明怎麼樣利用很委託和事件以及自定義的引數來實現跨窗體傳值。

例如:程式中我們有乙個主窗體,其中文字框的值是我們需要從另外乙個窗體中獲取的,在這個表單窗體中,填寫完整聯絡人位址資訊後,我們希望把這些資訊回傳到主窗體中,最終,我們想讓主窗體得到如下的資料:

using

system;

using

system.collections.generic;

using

system.componentmodel;

using

system.data;

using

system.drawing;

using

system.linq;

using

system.text;

using

system.windows.forms;

namespace

delegatepassvalue

private

void btnok_click(object

sender, eventargs e)

private

void btncancel_click(object

sender, eventargs e)

} public

class

addressupdateeventargs : system.eventargs

public

string country }

public

string state }

public

string city }

public

string zipcode }

}}

view code

其次,是主窗體(即要取得傳遞值的窗體),如下:

using

system;

using

system.collections.generic;

using

system.componentmodel;

using

system.data;

using

system.drawing;

using

system.linq;

using

system.text;

using

system.windows.forms;

namespace

delegatepassvalue

private

void btnsetaddress_click(object

sender, eventargs e)

private

void addressform_buttonclicked(object

sender, addressupdateeventargs e)

private

void btnclose_click(object

sender, eventargs e)

}}

view code

例項分析 事件與委託

事件 public delegate void timeeventhandler string s 委託宣告 class mytime class processtime the time is now s,datetime.now class testtime 委託 delegate void t...

委託例項(delegate例項 事件委託通知)

delegate例項 delegate是c 中的一種型別,它實際上是乙個能夠持有對某個方法的引用的類。與其它的類不同,delegate類能夠擁有乙個簽名 signature 並且它只能持有與它的簽名相匹配的方法的引用。它所實現的功能與c c 中的函式指標十分相似。它允許你傳遞乙個類a的方法m 給另乙...

委託與事件

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