EventHandlerList的一些發現

2022-03-27 04:57:00 字數 1429 閱讀 9705

eventhandlerlist是用來管理委託、事件的乙個集合,傳說當乙個控制項有很多事件的時候將這些事件放到eventhandlerlist裡面可以大大的節省記憶體。

eventhandlerlist常用的兩個方法:addhandler和removehandler兩個方法來對事件進行管理。

設有乙個custom類裡面有乙個funtion方法。

又定義了乙個mydelegate的委託型別,它和事件相關聯。

mydelegate asss=new mydelegate(new

custom().mycus);

mydelegate dsss=new mydelegate(new

custom().mycuss);

ehl.addhandler(

"drink

",asss);

ehl.addhandler(

"eat

", dsss);

ehl.removehandler(

"drink

",asss);

這樣我們在使用該委託被事件+=的時候,只需要

server.mydrink += (mydelegate)ehl["

eat"

]; server.myeat += (mydelegate)ehl["

drink

"];

第二條的繫結是不可能成功的,因為drink標記下的委託方法被刪除了。

可是如果這麼寫就不一定了:

ehl.addhandler("

drink

",new mydelegate(new

custom().mycus));

ehl.addhandler(

"eat

", new mydelegate(new

custom().mycus));

ehl.removehandler(

"drink

",new mydelegate(new

custom().mycus));

server.mydrink += (mydelegate)ehl["

eat"

]; server.myeat += (mydelegate)ehl["

drink

"];

這樣第二個繫結仍然可以使用,具體原因正在查明中.........

還有要注意的是:

msdn說啦:使用removehandler方法可以從 eventhandlerlist 物件定義的事件中移除事件處理程式。

如果在呼叫removehandler時事件只有乙個處理程式,則該事件將在eventhandlerlist例項中作為佔位符繼續存在。

一些人,一些事,一些

我覺得這是國內it企業浮躁和傳統的官本位性質決定的,導致國內企業都本末倒置。要想改變命運,我覺得有以下出路 1.不做技術了,改做混混 混混的概念很廣泛的,比如銷售 經理 幹部 皮包公司之類其實都屬於這類。中國就是這樣,越浮越掙錢,只有混混才能發財。要不更進一步,做流氓,廣義的流氓,也很不錯。2.專心...

Qt 關於QString索引為負數的一些發現

使用qstring擷取字串,呼叫mid函式,str2.mid 5,3 發現返回為空字串,後來想起原來是python可以肆意使用負數索引。但又發現之前使用remove函式成功的刪除了一段字串。qstring str1 qwe123123jio123j qstring str2 qwe123123jio...

發一些常用正規表示式!

a z0 9 a z0 9 a z0 9 i,非法email位址 1 35 d 非法手機號碼 0 9 0 9 0 9 非法 號碼 1 9 0 9 非法 號碼 1 9 0 9 0 必須輸入整數 1 9 0 9 必須輸入正整數 1 9 0 9 0 必須輸入非負整數 1 9 0 9 必須輸入負整數 htt...