2012年2月7日 星期二

C# 如何移除未知名稱的事件 - BarButtonItem.Click


上次有寫過,
如果傳進來的 BindingSource 有 PositionChanged 的事件的時候就去觸發它!
請參閱【C# 如何強制驅動物件的事件?】。

這次不一樣的是,如果傳進來的 BarButtonItem 有 ItemClick 的事件的話,
我要將它移除,然後重新掛上自己的事件。
為什麼會有這樣的需求呢?
因為在底層的查詢按鈕直接將事件寫在 ItemClick 上面了,
而我想要拿這個按鈕來用卻又不想要執行底層的程式,
所以我需要將原來 delegate 的移除之後再重新掛上我的 ItemClick 程式。
緣由說明完畢啦!接下來就要實做了,
依照上次【C# 如何強制驅動物件的事件?】的做法居然得不到 FieldInfo !
google 了很久,後來在 DevExpress 的討論區裡面看到一個範例,
雖然是 VB 有點看不太懂,
後來我照著翻譯成 C# 之後也是可以跑的,
程式碼如下: