在WinForms中重写事件处理程序

3

我有一个表单,其中包含一个自定义控件。该控件具有 ItemChanged 事件的事件处理程序。

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

我继承了这个表单,因此在我的新表单中有控件和事件,但是我想要在新表单中调用另一个事件处理程序来处理该事件,而不是使用上述的事件处理程序。如何实现这一点?


你想从ncNomSimple_ItemChanged调用哪个事件处理程序? - d.moncada
3个回答

6

在基类中:

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");
}

3

将事件处理程序从private更改为protected virtual,并在继承的表单中覆盖它。


0
在基类中,将其写为(public/protected)virtual,然后您可以在子类中编写override,但我认为基类不应该是protected。如果我错了,请纠正我。

2
你错了。将 private virtual 作为私有成员是没有意义的(而且是语法错误),因为私有成员对派生类是隐藏的。 - Jamiec

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接