当我添加一个泛型类型在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 –