C# 覆盖用户控件';方法
在我的用户控件中C# 覆盖用户控件';方法,c#,.net,wpf,C#,.net,Wpf,在我的用户控件中 public virtual void Test() { MessageBox.Show("Test"); } 还有我的主窗口 public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } } 正如您所看到的,我的主窗口已经有了继承窗口 那么我如何在MainWindow中重写我的测试void呢?之所以会这样,是
public virtual void Test()
{
MessageBox.Show("Test");
}
还有我的主窗口
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
}
正如您所看到的,我的主窗口已经有了继承窗口
那么我如何在MainWindow中重写我的测试void呢?之所以会这样,是因为如果你想重写你的userControl方法测试,一个类应该继承这个用户控件。例如,userControl中的方法测试:
public virtual void Test()
{
MessageBox.Show("Test");
}
并覆盖:
public partial class MyClass : YourUserControlClass
{
public override void Test()
{
MessageBox.Show("Message2");
}
}
您正在询问如何在继承自Z的另一个类Y中重写类X的方法。这是不可能的 您的类
MainWindow
继承自Window
,这意味着MainWindow
的祖先没有定义Test
方法
如果未在祖先中定义,则无法覆盖它
如果要将一个或多个方法添加到从不同基类继承的几个类中,可以将这些方法包含在接口中,而不是类中。然后,您可以让其他类实现该接口:
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");
}
}
真的不清楚你在问什么请用大家都能理解的不同方式解释公共覆盖void UserControlName.Test(){…}这对我来说不起作用,它说我不能使用公共或覆盖。