繁体   English   中英

为Windows窗体定义自定义控件的事件

[英]Defining an event for a windows forms custom control

我正在处理一个表单自定义控件。该控件是一个MonthCalendar,如Visual Studio(C#)MonthCalendar控件,我想为我的控件定义一个事件。 如何为此表单自定义控件定义新事件?

如果您的活动不提供任何其他信息(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方法以提高事件的良好做法。 它不仅允许从后代引发事件,还禁用事件引发,或在事件发生之前/之后添加一些行为。

public event EventHandler<EventArgs> YourEvent;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM