好的 - 我遇到了一个我很难解决的问题。
我有两种形式 - 一种继承自另一种。我们称它们为 FormParent 和 FormChild。
MyFunction() 在 FormParent 中定义。我不需要重写它,因为它会为许多不同的表单执行相同的基本操作,但它会调用 DoSomethingUnique()。 DoSomethingUnique 在父级中定义并在子级中覆盖。
我的问题是,由于我没有覆盖 MyFunction(),当我从 FormChild 调用它时,它调用的 DoSomethingUnique() 版本是来自 FormParent 的函数,而不是 FormChild。
有什么方法可以避免重写这两个函数,但调用的 DoSomethingUnique() 版本是来自 FormChild 的版本?
最佳答案
你想做的事一定会奏效。您只需要确保使用正确的修饰符即可。
在 FormParent..
virtual public void DoSomethingUnique()
在 FormChild 中
override public void DoSomethingUnique()
如果您没有使用 override
显式修改该方法,那么您将调用 FormParent 中的方法。
显然用您的返回类型替换 void。
关于C# 窗体继承 - 父窗体中的函数需要调用子窗体中的重写函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19189260/