使继承的事件处理程序在其基事件处理程序之前触发的正确方法是什么?



我有一个基类(本身继承自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();
    }
}

有直接的方法吗?

谢谢。

侦听您自己的事件是没有意义的。重写OnClick()方法。

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

或者先调用base.OnClick()来改变顺序

相关内容

  • 没有找到相关文章