在我的用户控件
中public virtual void Test()
{
MessageBox.Show("Test");
}
我的主窗口
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
}
正如您所见,我的主窗口已经有了继承窗口 那么如何在MainWindow中覆盖我的Test void?
答案 0 :(得分:2)
您正在询问如何在继承自Z的另一个类Y中覆盖类X的方法。这是不可能的。
您的班级MainWindow
继承自Window
,这意味着MainWindow
的祖先没有定义Test
方法。
如果未在祖先中定义,则无法覆盖它。
如果要向从不同基类继承的多个类添加一个或多个方法,可以在interface
而不是类中包含这些方法。然后,您可以使其他类实现该接口:
public interface ITest
{
void Test();
}
public class MyControl : Control, ITest
{
public void Test()
{
MessageBox.Show("MyControl Test");
}
}
public partial class MainWindow : Window, ITest
{
public MainWindow()
{
InitializeComponent();
}
public void Test()
{
MessageBox.Show("MainWindow Test");
}
}
答案 1 :(得分:1)
这是因为如果要覆盖userControl方法Test,则类应该继承此用户控件。例如userControl中的方法测试:
public virtual void Test()
{
MessageBox.Show("Test");
}
并覆盖:
public partial class MyClass : YourUserControlClass
{
public override void Test()
{
MessageBox.Show("Message2");
}
}