2012-07-31 46 views
1

在SO上發佈類似問題一年後。 Generic Windows Form Template使Windows窗體通用

你知道,如果有是一個更好的方法,使Windows窗體通用的,這裏是我想要做什麼:

public partial class EntryPointEditForm<T> : Form where T : ICriteriaObject<T> 
{} 

但拋出一個錯誤告訴我說: 沒有適當的方法找到重寫
的方法:

protected override void Dispose(bool disposing) 
+0

@AdamHouldsworth:我相信你是對的,但你的理由是錯誤的。設計者不需要對通用參數做任何事情;設計師只能使用基類。 – SLaks 2012-07-31 14:08:34

+0

@Slaks我的理解(儘管我的記憶很朦朧,不久之前)是設計試圖實例化正在設計的類,但不能,因爲它沒有'T',因此將'T'解析爲強通過使用臨時類型似乎工作。 – 2012-07-31 14:09:10

+0

@AdamHouldsworth:否。設計人員實例化_base_類,然後顯式讀取'InitializeComponent'方法的內容。這就是爲什麼你可以設計一個抽象表單類。 – SLaks 2012-07-31 14:10:22

回答

6

您需要更改.Designer.cs文件也b中的部分類聲明通用。

不過,我不認爲VS設計師支持通用表單類。
您可能需要製作一個非通用的抽象表單以供設計人員使用,然後製作一個通用類,以便您繼續使用。

+0

謝謝,它的工作原理。我會在11分鐘內接受你的問題。 – Gui 2012-07-31 14:07:59

+0

@JohnSmith:設計師是使用泛型類,還是需要應用我的解決方法? – SLaks 2012-07-31 14:08:55

+0

給我2秒,我嘗試加載設計師。 – Gui 2012-07-31 14:10:29