向表单添加泛型
本文关键字:泛型 添加 表单 | 更新日期: 2023-09-27 18:18:53
当我在c#中添加泛型类型到表单时,我得到如下错误
InitializeComponent在当前上下文中不存在
所有组件都是一样的
代码如下:
public partial class Form1<T> : Form
{
public Form1()
{
InitializeComponent();
}
}
首先,Form1
是一个部分类,它存在于多个文件中。
由于您将Form1.cs
文件更改为具有泛型Form1<T>
,因此您还需要将相应的Form1.Designer.cs
文件更改为具有泛型类。
否则c#编译器会认为这两个文件包含两个不同的类,一个是Form1<T>
,一个是Form1
。虽然它们在技术上有相同的名称,但它们是不同的。可以同时声明具有相同名称的泛型类型和非泛型类型。
所以修改两个文件
话虽如此,你不能有一般形式。当您成功地让编译器编译代码(使用上述更改)时,您将发现Visual Studio中的表单设计器对您不再满意,并且无法直观地设计表单。
正如在这个答案的评论中提到的,如果你可以没有表单设计器,那么这将不会是一个令人失望的
但是,如果您不能没有可视表单设计器,那么除了删除您首先添加的Form1
的通用参数之外,这是无法修复的。
InitializeComponent()
是Visual studio为使用Visual designer创建的窗体自动生成的方法。这个方法位于your_form_name.Designer.cs
类中,它是窗体的"可视"部分,其中控件放置在窗体上定义。
可能您只是从以这种方式创建的另一个表单复制粘贴了它。如果您的自定义类在解决方案中没有像Form1.Designer.cs
类那样的"可视"部分-那么只需从构造函数中删除此方法调用。否则,请确保你的"visual"类部分有这个方法。