我需要添加一個事件處理程序到像datagridview這樣的繼承控件,但Visual Studio不允許我。沒有一種方法讓繼承控件觸發基本事件處理程序和繼承的控件?在我指定的序列中?如何將事件處理程序添加到繼承的Winform控件?
0
A
回答
1
你的問題不清楚。假設您試圖在繼承的控件中處理基類的事件,您可以覆蓋On EventName受保護的虛擬方法。在覆蓋中,確保調用基本方法或事件不會觸發。
對於System.Windows.Forms中每個控件中的每個事件,此方法都存在(AFAIK)。如果您繼承的控件沒有此虛擬方法,則可以在構造函數中訂閱通風口。
例如:
class MyButton : Button {
//First way
protected override void OnClick(EventArgs e) {
base.OnClick(e); //Without this line, the event won't be fired
//...
}
//Second way
public MyButton() {
base.Click += Base_Click;
}
void Base_Click(object sender, EventArgs e) {
//...
}
}
編輯:
如果你想養基類的事件,你可以調用這些在事件名稱方法。
如果基類沒有,那麼唯一的方法就是聲明一個新事件,並向引發新事件的基類中的原始事件添加一個處理程序。請注意,如果您有其他代碼使用基類的事件,並且evnet不是virtual
,並且沒有提升方法,那麼您運氣不佳,除非您可以反編譯基類並找出事件的位置被提出。
1
WinForms中的事件通常具有相應的「On *」方法。只需調用該方法,它就會引發事件。例如,如果您想舉起「CellClick」,請調用「base.OnCellClick(new DataGridViewCellEventArgs(row,column))」。
相關問題
- 1. 如何將控件添加到繼承的WinForm中的容器
- 2. 如何將事件處理程序添加到繼承ITemplate的clss中的控件
- 3. 事件處理程序繼承
- 4. 繼承事件處理程序
- 5. 將事件處理程序添加到自定義控件
- 6. 將onClick事件處理程序添加到Silverlight控件?
- 7. 如何將事件處理程序添加到VB6中的索引控件?
- 8. 如何將事件處理程序添加到定期的DropDownList
- 9. 如何將事件處理程序添加到WP8中的MapPolygons?
- 10. 事件處理繼承(C++)
- 11. 如何將事件處理程序添加到bing映射EntityCollection?
- 12. Node.js:如何將事件處理程序添加到Connect/Express Server?
- 13. 無法將事件處理程序附加到我的控件?
- 14. C#WinForm的事件處理程序
- 15. 新添加的div不會繼承文檔中的事件處理程序
- 16. vs2008 c#:將事件添加到facebook的winform應用程序的eventlist控件
- 17. 將自定義事件處理程序添加到AppWidget組件
- 18. 將事件處理程序添加到純React組件中?
- 19. 如何從使用jQuery UI的繼承小部件插件中添加父事件處理程序?
- 20. 將事件處理程序添加到項目編程
- 21. 添加自己的事件處理程序在其他事件處理程序
- 22. 將參數添加到新的事件處理程序
- 23. 將事件處理程序添加到coffeescript類的jQuery滑塊
- 24. 如何添加事件處理程序在WPF像一個可以在winform
- 25. 如何將點擊事件處理程序附加到整個HighCharts Gauge控件?
- 26. 動態添加控件和事件處理程序C#
- 27. 處理來自繼承類的事件
- 28. 添加事件處理程序
- 29. 動態添加事件處理程序
- 30. WPF C#添加事件處理程序
+1,因爲這是我正在尋找的答案。 – 2013-08-19 10:49:28