【问题标题】:add partial file to existing form file将部分文件添加到现有的表单文件
【发布时间】:2013-02-19 08:44:34
【问题描述】:

我有一个窗口窗体应用程序项目。目前我的所有代码都在Form1.cs 文件中,这是默认文件。现在我在这个单个文件中有大约 1300 行代码。我想把这个文件代码分解成几个文件,我想使用“部分”关键字(我不想做任何激烈的事情)。那么我应该如何添加文件

右键项目名称->添加->新建项目->将结果分类成class1.csclass2.cs

但是这个文件在编译后会转换成一个form格式文件。添加的正确方法是什么,以便新文件与我现有的项目Form1.csForm1.cs[Design] 集成?

【问题讨论】:

  • partial 有其用途,但我建议可能合适的是将代码分解为逻辑单元,创建要在表单中使用的单独类,而不是跨越表单跨多个文件。
  • 您可以随意命名文件,只要确保命名空间和类名相同并且都标记为partial
  • 你是添加“Form”文件还是“C#类”?
  • 我正在添加一个 C# 类。但是,当我将新添加的类命名为 Form1.newclass.cs 时,添加后它会转换为表单文件
  • 你有没有找到任何方法来完成这项工作?我面临着完全相同的问题。该文件显示为 windows 窗体,并且不低于主窗体名称。

标签: c# partial


【解决方案1】:

您必须保留命名空间、类名并用partial 标记它。文件名对于它的工作来说并不重要,但这是一个很好的做法,以便开发人员可以快速识别文件的内容。

Form1.cs

namespace TheSameNamespace
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
    }

    // other definitions
}

Form1.Designer.cs

namespace TheSameNamespace
{
    partial class Form1
    {
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        // the rest of the designer class
    }
}

Form1.Calculations.cs

namespace TheSameNamespace
{
    partial class Form1
    {
        // calculation methods definitions
    }
}

Form1.EventHandlers.cs

namespace TheSameNamespace
{
    partial class Form1
    {
        // event handlers definitions
    }
}

等等……

【讨论】:

  • ...但是,根据文件的内容,给文件起一个有用的名称(如Form1.Calculations.csForm1.EventHandlers.cs 等)通常是个好主意。
  • ... 然而,这几乎总是不必要且可以避免的。部分性非常适合将生成的代码与用户代码分开,但应该重新考虑滥用它来划分您的逻辑。见鬼,我更喜欢 #regionated 代码而不是这个。
  • 答案是正确的。但有一件事被遗漏了。在项目文件中您需要添加: Form1.cs
【解决方案2】:

partial 关键字主要用于生成的文件,可以通过您自己的代码对其进行扩展 - 将单个臃肿的类拆分为多个部分是没有用的,但如果您真的想这样做,那么您必须:

  1. 创建一个新类。
  2. 重命名类以匹配您自己的类 (Form1.xxx.cs)
  3. 使用部分关键字并调整名称和命名空间。

清除:

Form1.cs

public partial class Form1 { /* ... */ }

Form1.somepart.cs

public partial class Form1 { /* ... */ }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-08
    • 1970-01-01
    • 1970-01-01
    • 2016-07-11
    • 1970-01-01
    • 2016-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多