我有一个基类(本身继承自Panel)和一个继承的类。基类有一个Click事件处理程序。
在基础处理程序之前,在继承类中激活的Click事件处理程序的正确方法是什么,然后只执行base的?
我的解决方法是以下形式:
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();
}
}
有直截了当的方式吗?
感谢。
答案 0 :(得分:9)
听你自己的事情是没有意义的。改为改写OnClick()方法。
class derived : first
{
protected override void OnClick(EventArgs e)
{
MessageBox.Show("derived");
base.OnClick(e);
}
}
或者先调用base.OnClick()来改变顺序。