是否可以在抽象类中创建事件?

时间:2011-07-18 18:23:04

标签: c# events delegates abstract-class

我有抽象类

public abstract class BaseClass
{
    public delegate void ContextMenuClickHandler(object sender, Point point);
    public event ContextMenuClickHandler OnContextMenuClick;

    public void OnMouseClick(MouseEventArgs e)
    {
        OnContextMenuClick(this, new Point((int) x, (int) y));
    }
}

我插入事件:

Base.ContextMenuClickHandler += ShowContextMenu;//error

void ShowContextMenu(object sender, Point point)
{

}

错误:

  

'Base.ContextMenuClickHandler'是'type',在。中无效   给定上下文

如何解决?

3 个答案:

答案 0 :(得分:2)

这里的问题是您使用的是事件类型ContextMenuClickHandler,而不是事件名称OnContextMenuClick。请尝试以下

base.OnContextMenuClick += ShowContextMenu

答案 1 :(得分:1)

OnContextMenuClick += ShowContextMenu;//fix
你使用了错误的变量。 OnContextMenuClick是您订阅的活动。

但在你的情况下,为什么不使用虚拟方法呢?

答案 2 :(得分:0)