在设计Inherited Forms时,Visual Studio 2008无法显示设计器

时间:2012-07-18 13:16:11

标签: visual-studio-2008 windows-forms-designer

我正在尝试通过继承我已创建的另一个表单来创建表单。原因是原始表单实际上有3个状态,继承结构将使调试,理解和改进更容易。

问题是我的Visual Studio 2008 Forms设计器对这个想法不太满意。而不是我可以设计的表单,我收到此错误消息:

无法为此文件显示设计器,因为其中的所有类都无法设计。设计者检查了文件中的以下类:InheritedForm ---无法加载基类“MyBaseForm”。确保已引用程序集并且已构建所有项目。

基本上我无法在设计器中看到我继承的表单,但原始表单在设计器中应该正常工作。

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

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

我也尝试过重建项目,清理项目并重新启动VS2008,希望它处于一些奇怪的状态,但没有任何帮助。我不会忽略我有一些可能会干扰Designer的奇怪项目设置的想法,因为项目文件有些陈旧并且有很多文件和元素。但由于我得到的错误描述,我发现这不太可能(仍在研究这个)。

我一直在互联网上搜索相同的文章,论坛或博客,无论我放入谷歌的搜索领域或进行链接浏览,都没有成功。你们是否有任何想法或建议可能导致我的问题?此时的任何帮助,提示或建议都非常受欢迎。

提前谢谢。

1 个答案:

答案 0 :(得分:4)

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

在我的问题中我忘了提到的是,由于第三方dll,我们的特定项目需要为x64或86x平台构建。在使用普通表单时,设计人员通常不会遇到这个问题,但是当涉及到继承表单时,设计人员实际上需要运行基本表单才能显示继承表单。

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

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

因此,当在平台特定项目中使用继承表单时,始终在项目平台版本中设计与VS2008平台版本相同(在我的情况下为x86。我实际上并不知道是否存在x64版本的visual studio 2008)。我仍然无法在原始项目中使用继承选择器,但代码中的继承就像魅力一样。