2012-01-09 47 views
2

我一直在使用窗體繼承一段時間,但沒有用下面的方法進行太多的研究。只需創建一個新類而不是表單,並從現有表單繼承,並根據需要將所需控件轉換爲受保護的。 Visual Studio 2010設計師就像一個魅力。如果需要更多控制,則可以始終覆蓋基本方法。WinForms繼承

我現在創建通用形式如下:當通過簡單的非設計類繼承
partial class EntityCollectionEditor <T> : Form where T : ISomeInterface <T>

形式,因爲這給了以下錯誤:
設計者無法顯示這個文件,因爲其中的任何類都不能設計。設計師檢查了文件中的以下類:XYZ。無法加載基類EntityCollectionEditor。確保組件已被引用,並且所有項目都已建好。

一個快速解決方案會很好,但我也在尋找一個好的資源/文章來教育自己。

+1

您不能從這個類繼承並在繼承的表單類上使用設計器。設計者需要能夠創建基類的一個實例,它不能提供T型參數。 – 2012-01-09 20:25:00

+0

讓我這樣說吧。基本形式沒有視覺元素。它在運行時創建一切。不過,我確實在其上包含一個按鈕。我應該做的是用一個簡單的類來代替,從窗體繼承並使其成爲通用的。 VS似乎從那裏正確地生成後備資源文件。 – 2012-01-11 05:49:51

回答

3

目前,winforms設計者不支持通用形式/控件。

各地我已經使用的唯一的工作是創建一個特定的表單類型:

class GenericBaseForm<T> : Form 
{ } 

class IntForm : GenericBaseForm<Int> 
{ } 

class StringForm : GenericBaseForm<String> 
{ } 

具體形式現在可以在設計中使用。不幸的是,如果你有很多特定的形式,它可能不是一個理想的解決方案。

+0

不確定。嘗試創建一個新的類XYZ並對其進行編碼以讀取'class XYZ :Form {}'。雙擊此課程可以在設計器中創建基本形式。不知道這是否可以依靠生產。不要讓複雜性下降。 – 2012-01-11 05:52:00