close
在 WinForm 裡的控制項,設計了許多不同的 Event,當專案愈大愈複雜,到底有哪些函式被設進 Event 裡,常常令人摸不清。一開始,試著利用 EventInfo 來得到想要的資訊,不過後來得知 EventInfo 缺乏這方面的資訊。後來找到了一篇對岸寫的文章,雖然解決了問題,不過方法可以說是一種 Hack…
以下的程式碼是參考自 C#中删除任意控件任意事件的事件列表的实现! ,至於這作者怎麼發現這方法的,我無從得知,只能說真的是太神奇了。
而上述程式碼的意思大概是,將 Events 這個 property 裡的值取出並轉型為 EventHandlerList。之後將 event name 的開頭加上 “Event” 字串,以此尋找對應的 field,把將 field 的值做為 key,丟進 EventHandlerList 物件找出 delegate 物件。
最後,再從 delegate 找出一群 delegate 物件(啥?!),這群 delegate 物件就是我們要的東西。這段邏輯說真的不太好懂,不過我想,有解決到問題就好…
另外,這是呼叫的方式:
全站熱搜
留言列表