2012-07-18 53 views
1

我试图通过从已经创建的另一个窗体继承来创建窗体。原因是原始形式实际上有3个状态,并且继承结构将使调试,理解和改进更容易。Visual Studio 2008无法在设计时显示设计师继承的形式

问题是我的Visual Studio 2008 Forms设计器不能很好地处理这个想法。取而代之的是我可以设计的表单,我收到以下错误消息:

设计人员无法显示此文件,因为其中没有任何类可以设计。设计人员检查了文件中的以下类:InheritedForm ---基类“MyBaseForm”无法加载。确保组件已被引用,并且所有项目都已建好。

基本上我无法在设计器中看到我的继承形式,但原始形式的工作原理与设计师应该一样。

这是非常令人沮丧的,所以要确保问题不是VS2008的错我创建了一个新的干净的Forms项目(.net 2.0)并创建了一个窗体,我称为Form1和Form1继承的另一个窗体(Form2)。这个项目工作得很好。我可以在设计器中看到Form1,在Form2中我可以看到我添加到Form1的标签,但无法在Form2中移动它,因为它属于表单1.

我的测试结果证明我的Visual Studio的确的工作原理;只是不在我需要它工作的原始项目中。我尝试的另一件事是当您使用VS2008指南创建一个继承的表单时,通过继承选择器创建一个继承自。在我的测试项目中,我可以看到我创建的所有表单,但在我的原始表单中,我无法选择任何内容。我试图浏览到我的bin文件夹中的exe文件,但它没有给我任何形式选择。

我也尝试重建项目,清理项目并重新启动VS2008希望它在一些奇怪的状态,但没有什么帮助。我不会否认这样的想法,即我有一些奇怪的项目设置可能会干扰Designer,因为项目文件有点旧,并且有很多文件和元素。但由于我得到的错误描述,我觉得这不太可能(仍然在调查这一点)。

无论我在Google的搜索字段中输入什么或进行链接浏览,都无法获得相同的文章,论坛或博客,我一直在搜索互联网。你们有没有想法或建议可以导致我的问题?任何帮助,暗示或建议在这一点是高度赞赏。

预先感谢您。

+0

将您的MyBaseForm类编辑为绝对最小值,仍然会重现此问题并将其发布到您的问题中。 – 2012-07-18 13:45:57

回答

4

我想出了这个问题。当我的一位同事认为他想要解决我的问题并在他的计算机上启动同一个程序时,我正在研究Hans Passant的建议。令我们吃惊的是,他的设计师参与了同一个项目。在我们查看构建配置之前,我们都对此感到困惑。

我忘了在我的问题中提到的是,由于第三方DLL,我们的特定项目需要为x64或86x平台构建。对于使用常规表单的设计人员来说,这通常不是问题,但对于继承的表单,设计师实际上需要运行基本表单以显示继承的表单。

我的同事建立配置设置为x86和我的x64。我们都在运行VS2008(86x)版本,这意味着设计人员最有可能在86x平台上构建。我们的结论是,如果我们将表单构建到x64,设计人员不知道如何运行它。所以我尝试将我的目标平台从64x改为86x,在VS关闭我的表单并重建项目之后,设计师再次工作。

可以肯定,我试着用一个新的空清洁项目来测试它。我创建了两种形式:一种基础和一种从基础继承的形式。默认情况下,构建配置是'AnyCPU',设计器工作正常。但是,当我将配置更改为“x64”时,设计师再次按预期失败。切换到'x86'解决了预期的问题。

因此,在特定于平台的项目中使用继承形式时,始终设计项目平台版本为您的VS2008平台版本(在我的情况的x86。我真的不知道,如果有视觉在x64版本工作室2008)。由于某些原因,我仍然无法在我的原始项目中使用继承选择器,但继承代码的工作就像魅力一样。

+0

谢谢。你的回答引起我的问​​题。 ***我的问题是构建的框架版本***它被设置为.Net frmwrk 4 CLIENT。我已将它设置为.Net frmwrk 4。 – 2014-03-20 19:28:37

相关问题