定义窗口窗体自定义控件的事件

本文关键字:事件 自定义控件 窗体 窗口 定义 | 更新日期: 2023-09-27 18:33:54

我正在处理一个窗体自定义控件。该控件是一个类似于 Visual studio(C#( MonthCalendar 控件的 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;