为什么/如何使用.designer文件?

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文件中吗?

很明显,mahi,只需调用在Designer.cs中定义的InitializeComponent()函数即可:)) - VladL
@VladL 正如我之前提到的,我没有使用VS自动生成的代码 :P - user2032433
由你决定,只是想向你问候mahI,很高兴在这里看到你用新账户登录 :) - VladL
你知道的,我们长时间交谈后,你的mah账号被删除了 :) - VladL
让我们在聊天中继续这个讨论。点击此处进入聊天室 - VladL
显示剩余2条评论
3个回答

6
我不记得确切的日期,但我知道在某个时候,Visual Studio并没有使用单独的.designer类,而是将所有设计和逻辑都包含在同一个类中,放在一个区域内。现在不再这样做,这表明将代码文件分离开来被广泛认为是更好的选择。
从那时起,Visual Studio设计师使用partial修饰符来分离UI逻辑和UI设计。当调用InitializeComponent时,您基本上调用了由设计器生成的所有代码,以创建UI界面。
我相信设计师会创建两个分开的文件,以将生成的代码与开发人员分离开来,因此不应手动修改。如果您不使用设计师,则该方法对您几乎没有优势,这是需要考虑的事情。
我认为选择不使用有助于将.NET打造成RAD环境的强大设计工具是不合理的,也不会受到其他许多编程人员的欢迎,所以我只能说 - 做自己喜欢的事情。如果您发现将设计代码放在单个类的一个区域中比使用单独的设计文件更清晰易读,那么就这样做吧。

谢谢解释! :) 那我想我不会使用.Designer.cs了。我发现自动生成的代码相当令人不安,它缺少我在程序中需要的许多功能(或者可能是我无法正确使用设计工具),而且代码有些难以阅读。此外,我更喜欢对我所做的事情拥有完全控制权,而不是让代码自动生成。 - user2032433

3
在Visual Studio 2005(C# 2)中引入了.Designer.cs,用于将Windows表单设计器生成的代码与程序员编写的代码分开。该文件的唯一用途是保存设计器生成的InitializeComponent方法。然而,不建议在该文件中放置自己的UI代码,因为WinForms设计器会解析文件的内容(实际上只有InitializeComponent方法)来创建设计师中的表单。在.Designer.cs文件中放置自己的代码没有意义。
顺便提一下,WinForms技术是以这样的方式设计的,必须使用设计器,否则就会遭受很多痛苦!

2

*.Designer.cs是一种代码文件,利用了partial class的强大功能,将应用程序代码UI设计分别保存在两个不同的文件中。

由于您正在手动进行Form设计,因此无需使用设计文件。

*.Designer.cs包含所有控件的声明以及方法private void InitializeComponent(),该方法初始化了这些控件!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接