我正在处理表单自定义控件。该控件是一个MonthCalendar,如Visual Studio(C#)MonthCalendar控件,我想为我的控件定义一个事件。 如何为此表单自定义控件定义新事件?
答案 0 :(得分:8)
如果您的活动不提供任何其他信息(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
正如Thorsten所说,创建virtual
方法来提高事件的良好做法。它不仅允许从后代引发事件,还可以禁用事件提升,或在事件发生之前/之后添加一些行为。
答案 1 :(得分:0)
public event EventHandler<EventArgs> YourEvent;