1

我正在尝试通过从我已经创建的另一个表单继承来创建一个表单。原因是原来的表单实际上有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,希望它处于某种奇怪的状态,但没有任何帮助。我不会否认我有一些可能会干扰设计器的奇怪项目设置的想法,因为项目文件有些旧并且有很多文件和元素。但是由于我得到的错误描述,我发现这不太可能(仍在调查)。

我一直在互联网上搜索到相同的文章、论坛或博客,无论我在 Google 的搜索字段中输入什么内容或进行链接浏览,都没有成功。你们中的任何人对可能导致我的问题的原因有什么想法或建议吗?在这一点上的任何帮助、提示或建议都非常感谢。

先感谢您。

4

1 回答 1

5

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

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

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

可以肯定的是,我尝试使用一个新的空干净项目对其进行测试。我创建了 2 种形式:一种是基类,另一种是从基类继承的。默认情况下,构建配置是“AnyCPU”,设计器工作正常。但是当我将配置更改为“x64”时,设计器再次按预期失败。切换到“x86”按预期解决了问题。

因此,在平台特定项目中使用继承表单时,请始终在项目平台版本中设计等于您的 VS2008 平台版本(在我的情况下为 x86。我实际上不知道是否有 x64 版本的 Visual Studio 2008)。由于某种原因,我仍然无法在我的原始项目中使用继承选择器,但在代码中继承就像一个魅力。

于 2012-07-19T06:41:50.270 回答