我正在处理窗体自定义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窗体 - 自定义MaskedTextBox
- 7. 自定义Windows窗体(表)
- 8. ASP.net Web窗体自定义控件自动更改下一个控件的ID
- 9. 自定义控制事件
- 10. Windows窗体自定义控件按键事件不能正常工作
- 11. Windows窗体中的自定义选项卡控件
- 12. C#自定义控件的自定义事件WinForm
- 13. 自定义控件上的自定义事件
- 14. 将自定义数据绑定控件放置在Windows窗体的DataRepeater控件中时没有事件触发
- 15. C#锁定一个Windows窗体控件
- 16. 在Windows窗体中使用WPF自定义控件?
- 17. 如何在Windows窗体中使用自定义控件?
- 18. Windows窗体标签自定义控件来源更改
- 19. 如何在Windows窗体中旋转自定义控件
- 20. 自定义系统菜单栏控件(windows窗体)
- 21. 使用自定义控件复制/粘贴到Windows窗体中
- 22. Windows窗体自定义控件没有正确绘画
- 23. 从自定义控件访问窗体的控件
- 24. Silverlight自定义控件创建自定义事件
- 25. C#中的自定义控件事件#
- 26. 带自定义事件的Asp.net控件
- 27. mvvm绑定自定义事件与自定义窗口与viewmodel
- 28. 获取自定义窗体窗体按钮事件
- 29. C#窗体窗体自定义控件跨线程操作
- 30. 如何将Windows窗体控件应用于WPF自定义控件库?
另外,最好通过名为'OnXXX'的'protected virtual void'方法来提升事件,其中'XXX'是事件的名称。在上面的示例中:'protected virtual void OnFoo(...)'。 –
@ThorstenDittmar到底!在我的例子中,我的糟糕 - 被遗忘的'virtual'关键字 –