我需要添加一個事件處理程序到像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. 將onClick事件處理程序添加到Silverlight控件?
- 5. 事件處理繼承(C++)
- 6. Node.js:如何將事件處理程序添加到Connect/Express Server?
- 7. 新添加的div不會繼承文檔中的事件處理程序
- 8. vs2008 c#:將事件添加到facebook的winform應用程序的eventlist控件
- 9. 將事件處理程序添加到純React組件中?
- 10. 將事件處理程序添加到項目編程
- 11. 添加自己的事件處理程序在其他事件處理程序
- 12. 如何添加事件處理程序在WPF像一個可以在winform
- 13. 處理來自繼承類的事件
- 14. 如何將點擊事件處理程序添加到wxStaticBitmap組件中?
- 15. 添加Google Analytics事件處理程序
- 16. 添加事件處理程序
- 17. 動態添加事件處理程序
- 18. 在GridView中添加事件處理程序到DropDownList - 如何?
- 19. 如何事件處理程序添加到控制的DataTemplate在資源字典
- 20. VB.NET如何將事件處理程序添加到位於以編程方式創建的控件中的ComboBoxColumn?
- 21. 禁止訪問繼承的winform控件
- 22. 無法將事件處理程序添加到ASP。 net page
- 23. jquery - 將事件處理程序添加到對象羣體
- 24. 將事件處理程序添加到WPF DataGrid拋出NullReferenceException
- 25. 將事件處理程序添加到AngularJS transclusion content
- 26. 將事件處理程序附加到Com事件:InvalidOperationException(S7-PLCSIM)
- 27. 將事件處理程序附加到事件OnInit或OnLoad上
- 28. 如何將變更事件處理程序附加到變量?
- 29. 在C#中繼承事件處理程序#
- 30. 如何將參數添加到JavaScript中的事件處理程序中?
+1,因爲這是我正在尋找的答案。 – 2013-08-19 10:49:28