方法'xxx'不能是事件的方法,因为这个类派生的类已经定义了方法

nik*_*nik 9 c# winforms

我有一个代码:

public class Layout : UserControl
{    
    protected void DisplayX_DisplayClicked(object sender, DisplayEventArgs e)
    {
        CurrentDisplay = (CameraPanel)sender;
    }
}
Run Code Online (Sandbox Code Playgroud)

'Layout'是我其他布局的基类.例如,我有一个'Layout1'派生自基类'Layout'.Layout1有一个元素Display01.Display01有一个DisplayClicked事件.我正在尝试通过Visual Studio Designer将DisplayX_DisplayClicked分配给Display01的DisplayClicked事件.

public partial class Layout1 : Layout
{
    private CameraPanel Display01;
}
Run Code Online (Sandbox Code Playgroud)

它给了我一个错误:

方法'xxx'不能是事件的方法,因为这个类派生的类已经定义了方法.

如何使用基类中的方法作为派生类的事件处理程序?可能吗 ?如果是这样,怎么样.如果不是,为什么.

Qua*_*ter 11

设计师无法处理,但你可以在代码中做到这一点.在Layout1的构造函数中,只需写:

public Layout1()
{   
    InitializeComponent();
    this.Display01.DisplayClicked += base.DisplayX_DisplayClicked;
}
Run Code Online (Sandbox Code Playgroud)

或者,您可以让设计器生成名为Display01_DisplayClicked的方法,然后将其实现为:

private void Display01_DisplayClicked(object sender, DisplayEventArgs e)
{
    base.DisplayX_DisplayClicked(sender, e);
}
Run Code Online (Sandbox Code Playgroud)

这更加冗长,所以我会以第一种方式做到这一点,但它会让设计师意识到该事件有一个处理程序.