Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 覆盖用户控件';方法_C#_.net_Wpf - Fatal编程技术网

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(){…}这对我来说不起作用,它说我不能使用公共或覆盖。