覆盖WinForms中的事件处理程序

时间:2012-12-18 08:50:27

标签: c# winforms events

我有一个带有自定义控件的表单。该控件在ItemChanged事件上有一个事件处理程序。

private void ncNomSimple_ItemChanged(object sender, EventArgs e)
{
    some code..
}

我继承了这个表单,因此我在新表单中拥有控件和事件,但是我希望在我的新表单中为该事件调用另一个事件处理程序,而不是上面的事件。我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:5)

在基类中:

protected virtual void ncNomSimple_ItemChanged(object sender, EventArgs e)
{
    MessageBox.Show("called from Test class");
}

在派生类中:

protected override void ncNomSimple_ItemChanged(object sender, EventArgs e)
{
    MessageBox.Show("called from Test1 class");
}

答案 1 :(得分:2)

将事件处理程序从private更改为protected virtual并以继承的形式覆盖它。

答案 2 :(得分:0)

在基类中,将其写为(公共/受保护)虚拟,然后您可以在子类中编写覆盖,但我不认为基类应该受到保护。如果我错了,请纠正我