向表单添加泛型

本文关键字:泛型 添加 表单 | 更新日期: 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"类部分有这个方法。