Можно ли создать событие в абстрактном классе? - PullRequest
1 голос
/ 18 июля 2011

У меня есть абстрактный класс

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' является типом, который недопустим в данный контекст

Как это исправить?

Ответы [ 3 ]

2 голосов
/ 18 июля 2011

Проблема в том, что вы используете тип события ContextMenuClickHandler вместо имени события OnContextMenuClick.Попробуйте следующее

base.OnContextMenuClick += ShowContextMenu
1 голос
/ 18 июля 2011
OnContextMenuClick += ShowContextMenu;//fix

вы использовали не ту переменную. OnContextMenuClick - это ваше событие, на которое вы подписаны.

а в вашем случае почему бы не использовать виртуальный метод?

0 голосов
/ 21 мая 2013

Вот пример, посмотрите: http://msdn.microsoft.com/en-us/library/hy3sefw3.aspx

...