情況是這樣的我有一個控件,它有事件在控件的定義中呈現,對於這個事件是附加處理程序我正在尋找一種方式來顯示某種類型的消息,如果在某些類中使用此控件另一個處理程序附加到此事件 恭喜, Iordan避免再次附加事件
Q
避免再次附加事件
0
A
回答
0
這並不是一個好方法。使用事件時,控件通常不應依賴於附加的事件處理程序的數量。無論是否有0或27個事件處理程序對事件做出反應,它都應該可以工作。如果你想有一個機制,你有更多的控制權,你應該考慮使用委託。
如果出於某種原因限制使用事件模型並希望控制事件處理程序的分配,一種方法可能是繼承原始類,在該類中創建具有相同名稱和簽名的事件作爲基類(使用new
關鍵字使原來的事件是隱藏的),並跟蹤事件處理程序如何安裝和拆卸:
public class BaseClass
{
public event EventHandler SomeEvent;
}
public class MyClass : BaseClass
{
private int _refCount = 0;
public new event EventHandler SomeEvent
{
add
{
if (_refCount > 0)
{
// handler already attached
}
base.SomeEvent += value;
_refCount++;
}
remove
{
base.SomeEvent -= value;
_refCount--;
}
}
}
0
我很困惑。
你能檢測到'+ = new EventHandler(...)'的調用並停止它...什麼?
我認爲你只需要更好地組織你的代碼。或者重新提出你的問題。
2
不公開揭露的事件。將其公開爲屬性。這會給你控制時,外部類的附加處理
MyClass類 { 私人事件處理_myEvent;在這這裏
+0
想想這是他正在尋找的。不錯,不知道你可以在C#中做這種事情 – James 2009-08-12 08:05:50
相關問題
- 1. 實體框架 - 避免再次查詢
- 2. 避免再次啓動應用程序
- 3. 如何避免多次註冊事件
- 4. 避免多次加入
- 5. 我如何避免再次加載相同的圖像?
- 6. 在完成活動時避免再次加載數據
- 7. CacheEntryCreated事件 - 再次
- 8. 避免FullCalendar中的事件疊加
- 9. 避免回發GridView事件
- 10. 避免wget將index.html附加到鏈接
- 11. codeigniter避免將引號附加到值
- 12. 附加事件
- 13. 附加事件
- 14. 避免加載jQuery的多次
- 15. 如何避免被追加多次
- 16. 避免多次重新加載xml
- 17. 避免多次加載紋理
- 18. 要避免再次運行該代碼,單擊刷新
- 19. 同步數據,以避免造成同一觀察者再次
- 20. ajax評級腳本 - 再次避免投票
- 21. 避免相同的值使用的Math.random再次出現()
- 22. 頁面引用時避免上次事件
- 23. Silverlight避免請求一個事件兩次
- 24. JQuery事件在加載時觸發一次,而不是再次
- 25. 添加屬性的實體類,如何避免再次寫入所有屬性?
- 26. C#。如何在發送郵件時避免附加圖像
- 27. 附加屬性以避免自定義控件
- 28. 避免加載
- 29. 避免發佈兩次? gridview控件
- 30. 試圖避免兩次讀取文件
}
更多信息認爲他是希望只顯示一條消息時,處理程序訂閱渲染事件....不認爲這是可能的。 – James 2009-08-12 07:55:11
嗯可能是我有點不清楚這裏的情況是我有我的控制繼承DataGridView控件我已附加CellPaint事件的Eventhandler。我希望如果有人使用我的控件附加了另一個eventHandler來處理這個事件以發出一些消息,說明這會導致不同的問題 祝你好運, Iordan – IordanTanev 2009-08-12 07:55:35