2017-07-24 71 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創建兩個表單)。之後您仍然可以在自動創建的表單中實現接口。 –