8

在创建表单时,我从不喜欢 Visual Studio[Design]选项卡,这就是为什么我总是从头开始以编程方式创建表单并且我只使用一个.cs文件,例如Form1.cs. 就在今天,我注意到使用[Design]选项卡创建一个新表单还会创建一个名为 的文件*.Designer.cs,该文件处理所有与设计相关的内容。

由于我是手动填写表格,我还应该使用*.Designer.cs文件吗?如果是这样,我应该何时、如何以及为什么使用它?该*.Designer.cs文件是什么意思,只是将VS自动生成的代码与用户代码分开,还是有更深层次的含义?


这是我如何创建表单的示例:

class MyForm : Form
{
    TextBox file;
    Button open, close;

    MyForm()
    {
        InitControls();
    }

    void InitControls()
    {
        file = new TextBox();
        file.Location = Point(...);
        open = new TextBox();
        open.Text = "Open File";
        ...
    }
}

我应该将我的InitControls方法和变量声明分开到.Designer.cs文件中吗?

4

3 回答 3

6

我不记得确切的日期,但我知道在某一点之前 Visual Studio 没有使用单独的 .designer 类,而是将所有设计器和逻辑包含在一个区域内的同一个类中。不再是这种情况的事实应该告诉您,它被广泛认为不如分离代码文件。

从那时起,Visual Studio 设计器使用partial修饰符将 UI 逻辑和 UI 设计分开。当您调用时,InitializeComponent您基本上调用了由设计器生成的所有代码来创建 UI。

我确信设计师创建了两个单独的文件来从开发人员那里抽象出生成的代码,因为它不应该手动修改。由于您不会使用设计器,因此这对您没有什么好处,这是需要考虑的。

我认为选择不使用有助于使 .NET 成为 RAD 环境的出色设计器工具是不合逻辑的,并且不能与许多其他编码器一起使用,所以我想说 - 做你喜欢的事。如果您发现在单个类中的一个区域中围绕您的设计器代码比使用单独的设计器文件更清晰、更易读,那么就这样吧。

于 2013-02-16T15:43:59.023 回答
3

.Desinger.csVisual Studio 2005 (C# 2) 中引入了将 Windows 窗体设计器生成的代码与程序员编写的代码分开。该文件的唯一用途是保存InitializeComponent设计器生成的方法。但是,不建议将您自己的 UI 代码放在该文件中,因为 WinForms 设计器会解析文件的内容(实际上只有InitializeComponent方法)以在设计器中创建表单。将您自己的代码放入.Designer.cs文件中是没有意义的。

顺便说一句,WinForms 技术的设计方式是您必须使用设计器,否则会遭受很多痛苦!

于 2013-02-16T15:39:29.883 回答
2

*.Designer.cs只不过Code File是利用的力量partial classApplication Code&保存UI Design在两个单独的文件中。

由于您是Form手动进行设计,因此不需要设计器文件。

*.Designer.cs包含所有Controls和 Method的声明private void InitializeComponent(),初始化控件!

于 2013-02-16T15:36:48.023 回答