C# VS2012设计器从其他窗体继承后无法打开窗体

C# VS2012设计器从其他窗体继承后无法打开窗体,c#,winforms,visual-studio-2012,designer,C#,Winforms,Visual Studio 2012,Designer,我有一个基本表单BaseForm,用于保存设置。此表单中没有控件,它在设计器中作为空表单打开。但是,当我继承此表单时,设计器拒绝在设计器中打开新创建的表单(设计器中没有按钮视图)。有什么问题吗?谢谢我强烈建议尽可能避免继承表单。为了保存设置,这当然是可以避免的:创建一个FormSettingsSaver类或类似的类,并在加载/关闭时将其作为参数传递给表单,等等。 继承表单会带来很多麻烦,微软并没有真正在WindowsForms和/或Designer中投入任何工作 编辑:如果您想继续使用继承表单,

我有一个基本表单
BaseForm
,用于保存设置。此表单中没有控件,它在设计器中作为空表单打开。但是,当我继承此表单时,设计器拒绝在设计器中打开新创建的表单(设计器中没有按钮视图)。有什么问题吗?谢谢

我强烈建议尽可能避免继承表单。为了保存设置,这当然是可以避免的:创建一个FormSettingsSaver类或类似的类,并在加载/关闭时将其作为参数传递给表单,等等。 继承表单会带来很多麻烦,微软并没有真正在WindowsForms和/或Designer中投入任何工作


编辑:如果您想继续使用继承表单,请检查注释中来自rene的链接。检查DesignMode可以避免大多数设计器问题。你也可以尝试注释掉这些陈述,直到找到罪犯为止。构造函数和(我认为)OnLoad中的所有代码都是在窗体显示在设计器中时执行的,因此有一个很好的起点。

问题在于
.csproj
文件

每个表格都有这样的签名

<Compile Include="Opers\MyForm.cs">
  <SubType>Form</SubType>
</Compile>

形式

子类型
元素表示这实际上是一个表单,在我的文件中,由于某种原因,它被删除了

它运行代码吗?在中时,该代码有意义吗?虽然只有在严格必要时才应使用继承,但考虑到基本表单没有布局,您可以创建一个没有关联设计器的.cs文件;请注意,属性IsDesignMode并不总是在构造函数中生成正确的值。有一个带有备用支票的帖子