继承通用形式无法在设计器中显示

时间:2011-01-04 12:00:18

标签: visual-studio winforms generics inheritance

我今天遇到了一个问题。如下。
我创建了一个通用表格,
公共类Form1:表格
然后我创建另一个继承形式,
公共类From2:Form1。
form2无法在VS设计器中显示,错误信息是“文件中的所有类都无法设计”,(此错误信息是从中文翻译而来的,中文信息是文件中的类都不能进行设计)。登记/> 但是这个程序可以成功编译,当它运行时,Form1和From2都可以工作。

任何人都可以给我一些帮助吗?感谢。

我不是英语母语人士,我希望我已经清楚地描述了我的问题。

2 个答案:

答案 0 :(得分:6)

这是设计师的限制。您可以通过添加指定类型的临时派生表单来解决此问题。我在博文中解释过这个:

http://adamhouldsworth.blogspot.com/2010/02/winforms-visual-inheritance-limitations.html

答案 1 :(得分:2)

我想在post of Adam添加更具体的答案。

BaseForm是您的通用表单的名称,GenericClass可能的类型参数之一。

BaseForm<T>可能如下所示:

public class BaseForm<T> : Form
{ }

首先,您需要上面的基类。事实上,这是你在讨论这个问题之前可能已经使用过的部分。

然后使用此中间实现。

public class SampleFormIntermediate : BaseForm<GenericClass>
{
    public SampleFormIntermediate()
    {
        InitializeComponent();
    }
}

您需要将此类用于Visual Studio设计器。只有这一点。我建议用编译器指令来装饰它,这样它才会在Debug模式下使用:

public partial class SampleForm : SampleFormIntermediate
{
}

使用此Visual Studio'了解'在设计器中打开的内容以及如何打开它。