Как правильно вызвать унаследованный обработчик событий перед обработчиком событий своей базы? - PullRequest
1 голос
/ 10 октября 2011

У меня есть базовый класс (сам наследующий от Panel) и унаследованный класс.Базовый класс имеет обработчик события Click.

Как правильно обработать обработчик события Click в унаследованном классе. Огонь перед обработчиком базы и только после этого выполнение базы?

Мой обходной путь имеет следующую форму:

class first : Panel
{
    public first()
    {
        Click += first_Click;
    }

    protected virtual void first_Click(object sender, EventArgs e)
    {
        doHandler();
    }

    protected void doHandler()
    {
        MessageBox.Show("first");
    }
}

class derived : first
{
    protected override void first_Click(object sender, EventArgs e)
    {
        MessageBox.Show("derived");
        doHandler();
    }
}

Есть прямой путь?

Спасибо.

1 Ответ

9 голосов
/ 10 октября 2011

Нет смысла слушать ваши собственные события.Вместо этого переопределите метод OnClick ().

class derived : first
{
    protected override void OnClick(EventArgs e)
    {
        MessageBox.Show("derived");
        base.OnClick(e);
    }
}

Или сначала вызовите base.OnClick (), чтобы изменить порядок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...