c# - VS2017 C# 导入 WinForms 生成命名空间错误

标签 c# winforms import visual-studio-2017 namespaces

我有两个解决方案,一个是功能性的,另一个是实验性的。我制作了一些表单和代码,我想从实验导入功能。

我按照指示找到 here导入表格。

  • 从实验文件夹
  • 添加现有文件(cs、designer 和 resx)
  • 从解决方案中排除它们
  • 从功能文件夹
  • 再次添加它们
  • 完成(有点)

  • 我遇到的是我需要更改 FormOne.Designer.cs 文件上的命名空间以匹配 Functional 解决方案的命名空间:
    namespace WindowsFormsApp1
    

    变成:
    namespace ProjName
    

    这样做并保存它后,它适用于 FormOne。

    但对 FormTwo 和 FormThree 执行完全相同的过程(一次一个表单)失败。当我尝试构建或重建解决方案或项目时,我得到:
    FormTwo.Dispose(bool): no suitable method found to override
    

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

    最佳答案

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

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

    如果更改 Form1 的命名空间在 Form1.cs 类中创建类,而忘记更改 Form1.Designer.cs 中类的命名空间,您将导致两个类都称为 Form1在您的项目中,在不同的命名空间中。 Form1 in the Designer file, that doesn't inherit from Form, cannot thus have a Dispose()` 覆盖:

    enter image description here

    FWIW 你不需要编辑命名空间;您可以在新 namespace 的表单中使用旧 namespace 中的表单,只需在新 namespace 中的表单顶部添加“使用旧 namespace ”

    关于c# - VS2017 C# 导入 WinForms 生成命名空间错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61462224/

    相关文章:

    C# 与 COBOL 小数舍入

    c# - 清除页面中的所有单选按钮

    c# - 如何跟踪窗口窗体的崩溃?

    python - 如何阻止导入 Python stdlib 模块?

    database - 在不指定列详细信息的情况下从命令行将 CSV 文件加载到 Oracle 数据库的新表中的简便方法

    c# - IIS7 进程回收后,两台服务器之间的 WCF 通信崩溃

    c# - 等效于 NHibernate IStatelessSession 的 Load 方法

    c# - 在 WPF 中重用触发条件或多重绑定(bind)

    c# - 防止 ASP.Net AppDomain 卸载

    csv - 读取一个csv文件,忽略中间的一些行