2017-07-24 70 views
0

我一直在尝试过去几个小时来解决一个问题,我真的不明白什么是错的。我正在为需要多种形式的项目构建一个GUI系统,这些形式几乎相同,但不完全相同。我想我有一个类(如下所示),它继承了标准的普通形式。你可以继承自继承正常形式的自定义窗体吗

class GUIWindow : Form, IGUIWindow 
{ 
    public GUIWindow() : base() 
    { 

    } 

    public GUIWindow(string name) : base() 
    { 
     this.Name = name; 
    } 
} 

和第二类(下图),它继承了第一课,让我做基类的任何改变,它会影响到所有的子类,并且将有4级左右的子类。

class GUIWindowText : GUIWindow, IGUIWindow 
{ 

    public GUIWindowText() : base() { } 

    public GUIWindowText(string name) : base() 
    { 
     this.Name = name; 
    } 
} 

但如果我看在Visual Studio(2017年)的设计师,我得到这个错误:

Constructor on type 'LCARS.GUIWindow' not found. 

即使我确实提供了一个空的构造。所以我必须错过一些明显的东西,但我不知道是什么。

编辑

它编译罚款。我只是看不到设计器

+0

它编译没有错误吗? –

+0

@BradleyUffner是的,它编译,但我不能看设计师 – Programmer2120

+0

除了具有公共无参数构造函数,并确保每个类都调用其各自的'InitializeComponent',试着做两个形式类'公共'。 – Alejandro

回答

0

让Visual Studio创建继承的表单:在您的项目中,右键单击解决方案资源管理器以打开上下文菜单,添加>新建项目>继承的表单(在Windows窗体部分中)以及然后点击“添加”。这会打开一个向导,要求您输入基本窗体,选择GUIWindow并单击确定。 VS然后正确设置派生形式。注意:如果您想更改派生形式中现有基础形式的控件(例如更改其大小或移动它们),则必须将其可访问性从private更改为protected

+0

这没有奏效。它确实创建了一个类,但我不能使用这个设计器。 – Programmer2120

+0

您是通过在VS中插入新项目“Windows Form”来创建基本Form'GUIWindow'吗?您需要这样做,因为您需要使用部分类和'InitalizeComponent'方法的整个设置。如果你手动创建这个类,这将不起作用。 (即让VS创建两个表单)。之后您仍然可以在自动创建的表单中实现接口。 –