VS2017 C#导入WinForms会产生命名空间错误

问题描述 投票:0回答:1

我有两个解决方案,一个是功能性的,另一个是实验性的。 我做了一些表格和代码,我想把它们从实验型导入到功能型。

我遵循的方向是 此处 来导入表单。

  1. 添加实验文件夹中的现有文件(cs、designer和resx)。
  2. 将其排除在解决方案之外
  3. 从功能文件夹中再次添加它们
  4. 已完成(算是)

我遇到的是,我需要修改FormOne.Designer.cs文件上的命名空间,使之与Functional解决方案的命名空间一致。

namespace WindowsFormsApp1

改为:

namespace ProjName

这样做并保存后,FormOne就可以了。

但是按照完全相同的过程(一次一个表单)来处理FormTwo和FormThree却失败了。 当我尝试构建或重建解决方案或项目时,我得到。

FormTwo.Dispose(bool): no suitable method found to override

FormTwo和FormThree都出现了同样的错误。 我对命名空间行进行了复制粘贴,以确保我在输入时没有输入错误。

c# winforms import visual-studio-2017 namespaces
1个回答
0
投票

表单使用 partial 类的功能,以结合 Form1 在您编辑的代码文件中(Form1.cs)与 Form1 在设计者编辑的文件中(Form1.Designer.cs)

设计师代码覆盖了 Dispose()的方法,它可以覆盖,因为它的 Form1 Form1.cs中的类继承于 Form,它有一个可覆盖的 Dispose(). 该 partial class Form1 的设计器文件中,不继承任何东西(它不能继承设计器文件中的 Form 也因为这一点已经在 Form1.cs;你不能继承两次)

如果你改变了 Form1 类,而忘记更改Form1.Designer.cs中的类的命名空间,你会导致两个类都被称为 Form1 在你的项目中,在不同的命名空间中。命名空间中的 Form1 in the Designer file, that doesn't inherit from Form, cannot thus have aDispose()`来覆盖。

enter image description here

顺便说一下,你不需要编辑命名空间;只要在新命名空间的表单顶部加上 "using OldNamespace",就可以在新命名空间的表单中使用旧命名空间的表单。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.