我正在處理窗體自定義control.the控件是一個MonthCalendar像Visual Studio(C#)MonthCalendar控件,我想爲我的控件定義一個事件。 如何定義這個表單自定義控件的新事件?定義一個Windows窗體自定義控件的事件
3
A
回答
7
如果賽事不應該提供任何額外的信息(foo是您的活動名稱):
public event EventHandler Foo;
,提高這樣說:如果你需要傳遞
protected virtual void OnFoo()
{
if (Foo != null)
Foo(this, EventArgs.Empty);
}
向事件處理程序提供一些附加信息,然後通過繼承自EvenArgs
類創建自定義參數類
public class FooEventArgs : EventArgs
{
public string Message { get; private set; }
public FooEventArgs(string message)
{
Message = message;
}
}
申報事件是這樣的:
public event EventHandler<FooEventArgs> Foo;
,提高這樣說:
protected virtual void OnFoo(string message)
{
if (Foo != null)
Foo(this, new FooEventArgs(message));
}
它很好的做法,建立由地方聲明事件類的後裔引發事件的保護方法。也很好的做法,使用事件命名約定:
- 加後綴
-ing
到事件名稱之前 發生了一件事,其引發的事件(通常你可以取消這樣的事件)(例如驗證) - 加後綴
-ed
到事件名稱對於事情發生之後引發的事件(如點擊)
由於托爾斯滕表示,好的做法創造virtual
方法引發事件。它不僅可以從後代引發事件,還可以禁用事件提升,或在事件發生之前/之後添加一些行爲。
0
public event EventHandler<EventArgs> YourEvent;
相關問題
- 1. Windows窗體 - 自定義用戶控件
- 2. C#窗體中的自定義控件Windows窗體鼠標事件問題
- 3. 公開在另一個自定義控件的控件模板中定義的自定義控件事件
- 4. 使用自定義組件中的控件處理事件Windows窗體
- 5. 自定義控件屬性 - C#,窗體
- 6. 自定義Windows窗體(表)
- 7. Windows窗體 - 自定義MaskedTextBox
- 8. ASP.net Web窗體自定義控件自動更改下一個控件的ID
- 9. 自定義控制事件
- 10. Windows窗體中的自定義選項卡控件
- 11. 自定義控件上的自定義事件
- 12. C#自定義控件的自定義事件WinForm
- 13. 將自定義數據綁定控件放置在Windows窗體的DataRepeater控件中時沒有事件觸發
- 14. C#鎖定一個Windows窗體控件
- 15. Windows窗體自定義控件沒有正確繪畫
- 16. 自定義系統菜單欄控件(windows窗體)
- 17. Windows窗體標籤自定義控件來源更改
- 18. 使用自定義控件複製/粘貼到Windows窗體中
- 19. 在Windows窗體中使用WPF自定義控件?
- 20. 從自定義控件訪問窗體的控件
- 21. mvvm綁定自定義事件與自定義窗口與viewmodel
- 22. Silverlight自定義控件創建自定義事件
- 23. C#中的自定義控件事件#
- 24. 獲取自定義窗體窗體按鈕事件
- 25. C#窗體窗體自定義控件跨線程操作
- 26. 通過自定義控件屬性或自定義控件的自定義事件傳遞函數?
- 27. 菜單項自定義控件事件
- 28. 自定義控件不渲染事件
- 29. 自定義事件在用戶控件
- 30. wpf自定義控件事件
另外,最好通過名爲'OnXXX'的'protected virtual void'方法來提升事件,其中'XXX'是事件的名稱。在上面的示例中:'protected virtual void OnFoo(...)'。 –
@ThorstenDittmar到底!在我的例子中,我的糟糕 - 被遺忘的'virtual'關鍵字 –