我今天遇到了一个问题。如下。
我创建了一个通用表格,
公共类Form1:表格
然后我创建另一个继承形式,
公共类From2:Form1。
form2无法在VS设计器中显示,错误信息是“文件中的所有类都无法设计”,(此错误信息是从中文翻译而来的,中文信息是文件中的类都不能进行设计)。登记/>
但是这个程序可以成功编译,当它运行时,Form1和From2都可以工作。
任何人都可以给我一些帮助吗?感谢。
我不是英语母语人士,我希望我已经清楚地描述了我的问题。
答案 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'了解'在设计器中打开的内容以及如何打开它。