Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.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# WinForms Designer中找不到类型的VS2017构造函数_C#_Winforms_Inheritance_Constructor - Fatal编程技术网

C# WinForms Designer中找不到类型的VS2017构造函数

C# WinForms Designer中找不到类型的VS2017构造函数,c#,winforms,inheritance,constructor,C#,Winforms,Inheritance,Constructor,我试图创建一个从表单继承的表单。基类称为Window,它继承自MetroForm,这是我下载并安装在项目中的NuGet包。此表单在设计器中加载时不会出现问题 public partial class Window : MetroForm { public WindowType windowType { get; } public Engine engine { get; } public Window(WindowType windowType, Engine engi

我试图创建一个从表单继承的表单。基类称为
Window
,它继承自
MetroForm
,这是我下载并安装在项目中的NuGet包。此表单在设计器中加载时不会出现问题

public partial class Window : MetroForm
{
    public WindowType windowType { get; }
    public Engine engine { get; }

    public Window(WindowType windowType, Engine engine)
    {
        InitializeComponent();
        this.windowType = windowType;
        this.engine = engine;
    }
}
子窗体的声明和构造如下:

public partial class GraphicsWindow : Window
{
    public GraphicsWindow(WindowType windowType, Engine engine) : base(windowType, engine)
    {
        InitializeComponent();
    }
}
它在设计器窗口中引发以下错误:

“找不到类型为'DispatcherDesk.Windows.Window'的构造函数。”

我发现有多个线程在完全相同的情况下解决了这个错误,但没有一个解决方案适合我。我尝试向父窗体和子窗体添加无参数构造函数,添加
InitializeComponent()
调用它们,并使用
[过时]
属性和
私有
访问修饰符。我还尝试了重建解决方案,并在每个步骤重新启动VisualStudio


目前我所能想到的是,这些解决方案在VS2017中不再有效,但我不知道为什么。提前感谢您的回答

基类必须具有默认构造函数才能在设计器中使用。这仅仅是因为设计者无法确定需要传递哪些参数。因此,您必须添加
公共窗口()
。如有必要,在DesignMode属性中添加检查,以发现表单正在设计中(如果可能需要放弃运行时功能)。不幸的是,我尝试了该解决方案,但仍然没有成功。