當我添加一個泛型類型在C#中的形式,我得到這樣加入仿製藥形成
的InitializeComponent錯誤並不在當前的背景下
與同爲我所有的組件存在。
下面是代碼:
public partial class Form1<T> : Form
{
public Form1()
{
InitializeComponent();
}
}
當我添加一個泛型類型在C#中的形式,我得到這樣加入仿製藥形成
的InitializeComponent錯誤並不在當前的背景下
與同爲我所有的組件存在。
下面是代碼:
public partial class Form1<T> : Form
{
public Form1()
{
InitializeComponent();
}
}
InitializeComponent()
是Visual工作室用於使用可視化設計創建的形式自動生成的方法。該方法位於your_form_name.Designer.cs
類中,該類是窗體的「可視化」部分,其中控件放置在窗體上。
也許你剛剛從這種方式創建的另一個表單複製粘貼它。如果您的自定義類在您的解決方案中沒有類似Form1.Designer.cs
類的「可視化」部分 - 那麼只需從構造函數中刪除此方法調用即可。否則,請確保您的「視覺」類部件具有此方法。
是的,我的類有一個可視化組件,我只是想將一個通用參數傳遞給一個自動生成的窗體。 – Virus7711
首先,Form1
是部分類,它存在於多個文件中。
由於您將Form1.cs
文件更改爲具有通用的Form1<T>
,因此還需要將相應的Form1.Designer.cs
文件更改爲具有泛型類。
否則,C#編譯器會將這兩個文件視爲包含兩個不同的類,一個是Form1<T>
和一個Form1
。雖然他們在技術上具有相同的名稱,但它們是截然不同的。您可以同時聲明具有相同名稱的泛型類型和非泛型類型。
所以改變這兩個文件。
現在,說了那麼,你不能有通用的形式。當您成功獲得編譯器編譯代碼(通過上述更改)時,您會發現Visual Studio中的表單設計器不再滿意您,並且無法直觀地設計該表單。
正如在這個答案的評論中提到的,如果你可以沒有表單設計師的生活,那麼這不會是一個showstopper。
但是,如果你不能沒有視覺表單設計師,那麼這是無法修復的,除非要刪除首先添加的Form1
的通用參數。
所以你應該嘗試找到一種不同的方式去做你想做的事。
我想如果OP很高興不要使用Visual Studio設計器,那麼在使用通用表單時就不存在真正的問題。我不會建議在沒有設計師的情況下嘗試處理表單的gui,但 – Sayse
我同意,我已經編輯了該效果的答案。 –
請澄清一下:爲什麼要添加一個泛型類型到您的表單? –
我想知道你想在哪裏使用T –