.net - 将旧的 .NET 代码拆分为设计器部分类

标签 .net visual-studio

我正在开发一个较旧的 .NET 代码库,该代码库将所有设计器代码都填充到与我的代码相同的代码文件中(预部分类)。

是否有一种机制可以告诉 Visual Studio 2008 返回并将设计器代码重构为 X.designer.cs 部分类文件?

最佳答案

我刚刚所做的完全是手动的:

  • 创建您的form.Designer.cs
  • 将其添加到 Visual Studio(右键单击,添加现有项)
  • 将 partial 关键字添加到现有类中。
  • 添加命名空间与原始 CS 完全相同到 yourform.designer.cs
  • 在这个命名空间中,添加类定义(不要忘记包含 partial 关键字)。 不要在 Designer.cs 中向该部分类添加继承和/或接口(interface)。
  • 完成后,您就可以剪切和粘贴以下内容了:

  • a) 删除您在原始 Winform 中可能拥有的组件对象。如果应用程序是 .NET 1.1,您将拥有如下内容:
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private Container components = null;
    

    b) 在 Designer 类中添加一个新的组件对象:
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;
    

    c) 除非您有特定的处置方法,否则这是标准。如果您没有任何形式的继承,我认为 base.Dispose 可以安全删除:
        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose( bool disposing )
        {
            if ( disposing && ( components != null ) )
            {
                components.Dispose();
            }
            base.Dispose( disposing );
        }
    

    d) 复制 全部 中的代码#region Windows 窗体设计器生成的代码 到新的 Designer.cs 类。

    e) 您还应该复制 全部 您在设计器中使用的所有对象(标签、texbox 等)的成员变量。

    这应该就是全部了。保存并编译。

    请记住,一个部分类可以在 N 个文件中拆分,但所有文件都必须共享相同的命名空间。

    值得吗?
    好吧,就我而言,我有一堆 巨大的带有大量代码和控件的winforms。每次我从设计师切换到设计师时,VS2008 都会爬行。这使代码 View 更具响应性。我记得在获得响应代码之前必须等待 3-5 秒。现在需要 1…

    更新:

    执行步骤 1 到 5 并移动现有控件或添加新控件不会自动将任何内容移动到 Designer.cs 类。
    新的东西进入了新的 Designer 类,但不幸的是,旧的东西仍然保留在原来的位置。

    您还必须关闭并重新打开文件(在添加/创建部分类之后),以便 VS 在设计器中正确绘制;不这样做可能会导致绘制空表格。

    关于.net - 将旧的 .NET 代码拆分为设计器部分类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/669540/

    相关文章:

    c# - .NET Core 性能计数器的故事是什么?

    c# - 使用现有API的.Net中事件的线程上下文是什么?

    c# - 应该使用 Dispose() 或 Finalize() 来删除临时文件吗?

    c# - 安装好vs2015后如何在vs2015上安装Asp.Net?

    c# - 类库 - 引用 - 复制本地的可重用性?

    .net - 如何在执行文件时在 Powershell 中忽略暂停 - 按任意键

    c# - System.Diagnostics.Trace - 记录异常的正确方法

    visual-studio - Visual Studio 表单设计

    asp.net-mvc - 在 VS2012 中快速切换 MvcBuildViews

    c# - WPF 应用程序使用新的 csproj 格式