c# - 将泛型添加到表单

标签 c# windows forms winforms generics

当我在 C# 中向表单添加泛型类型时,出现类似

的错误

InitializeComponent does not exist in the current context

我的所有组件都一样。

代码如下:

public partial class Form1<T> : Form
{
    public Form1()
    {
        InitializeComponent();
    }
}

最佳答案

首先,Form1是一个部分类,它存在于多个文件中。

由于您更改了 Form1.cs文件具有通用 Form1<T> ,还需要改相应的Form1.Designer.cs文件具有通用类。

否则 C# 编译器会将这两个文件视为包含两个不同的类,一个 Form1<T>和一个Form1 .虽然它们在技术上具有相同的名称,但它们是不同的。您可以同时声明具有相同名称的泛型和非泛型类型。

因此更改这两个文件。


话虽如此,您不能拥有通用表单。当您成功让编译器编译代码(进行上述更改)时,您会发现 Visual Studio 中的表单设计器不再满足您的要求,无法直观地设计表单。

如对此答案的评论中所述,如果您可以在没有表单设计器的情况下生活,那么这将不会成为阻碍。

但是,如果您离不开可视化表单设计器,那么除了删除 Form1 的通用参数外,这个问题无法修复。您首先添加的。

所以你应该尝试找到一种不同的方式来做你想做的事。

关于c# - 将泛型添加到表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33300338/

相关文章:

c# - 以编程方式更改 Internet Explorer 设置?

windows - Windows 上的 Nginx - 无法绑定(bind)任何端口

jQuery基于Field的自动计算

php - 让所有表单验证错误都显示在 symfony 的顶部?

windows - 从带有 %~dp0% 的路径复制文件不起作用

javascript - 使用 Jquery .click 显示/隐藏切换,适用于新用户,但不适用于种子

c# - 如何在 wpf c# visual studio 中对标签或文本 block 使用点击事件?

c# - 自述文件包含在设置项目 VS2005 中时不显示其内容?

c# - 获取 AD 计算机描述

c# - 如何在 WP 8.1 中为超链接按钮添加下划线