当我在C#中向表单添加泛型类型时,我会收到类似
的错误InitializeComponent在当前上下文中不存在
和我所有组件的相同。
以下是代码:
public partial class Form1<T> : Form
{
public Form1()
{
InitializeComponent();
}
}
答案 0 :(得分:3)
首先,Form1
是部分类,它存在于多个文件中。
由于您已将Form1.cs
文件更改为通用Form1<T>
,因此您还需要更改相应的Form1.Designer.cs
文件以使其具有通用类。
否则,C#编译器会将这两个文件视为包含两个不同的类,一个Form1<T>
和一个Form1
。虽然它们在技术上具有相同的名称,但它们是截然不同的。您可以同时声明具有相同名称的泛型和非泛型类型。
所以改变这两个文件。
现在,话说回来,你不能拥有通用表格。当您成功地使编译器编译代码(使用上述更改)时,您会发现Visual Studio中的表单设计器不再满意您,并且无法在视觉上设计表单。
正如对此答案的评论中所提到的,如果您可以在没有表单设计器的情况下生活,那么这将不是一个显示器。
但是,如果没有可视化表单设计器就无法生存,那么除了将通用参数删除到您首先添加的Form1
之外,无法修复此问题。
所以你应该尝试找到一种不同的方式来做你想做的事。
答案 1 :(得分:0)
InitializeComponent()
是Visual Studio为使用可视化设计器创建的表单自动生成的方法。此方法位于your_form_name.Designer.cs
类中,即&#34; visual&#34;表单的一部分,其中控件放置在表单上。
可能您只是从以这种方式创建的另一个表单中复制粘贴它。如果您的自定义类没有&#34; visual&#34;部分类似于解决方案中的Form1.Designer.cs
类 - 然后只是从构造函数中删除此方法调用。否则请确保您的&#34; visual&#34; class part有这个方法。