我在创建表单时从未喜欢过Visual Studio [Design]
标签,这就是我总是从头开始以编程方式创建表单的原因,而我只使用一个.cs
文件,例如{{ 1}}。就在今天,我注意到使用Form1.cs
选项卡创建一个新表单也会创建一个名为[Design]
的文件,该文件处理所有与设计相关的内容。
由于我手动填写表单,我还应该使用*.Designer.cs
文件吗?如果是这样,我何时,如何以及为什么要使用它? *.Designer.cs
文件的意图是什么,它只是将VS自动生成的代码与用户代码分开,还是具有更深层含义?
以下是我如何创建表单的示例:
*.Designer.cs
我应该将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
文件吗?
答案 0 :(得分:6)
我不记得确切的日期,但我知道在某一点上,Visual Studio没有使用单独的.designer类,并且包含区域内包含的同一类中的所有设计器和逻辑。不再是这种情况的事实应该告诉你,它被广泛认为不如分离代码文件。
从那时起,Visual Studio设计器就使用partial
修饰符来分离UI逻辑和UI设计。当您调用InitializeComponent
时,您基本上会调用设计器生成的所有代码来创建UI。
我确信设计人员创建了两个单独的文件来抽象开发人员生成的代码,因为它不应该手动修改。因为你不会使用设计师,所以这对你来说没有什么好处,这是需要考虑的事情。
我认为选择不使用有助于使.NET成为RAD环境的精彩设计工具是不合逻辑的,并且与其他许多编码器不能很好地飞行,所以我会说 - 只要做你喜欢的事情。如果您发现在单个类中的区域中您的设计器代码比使用单独的设计器文件更清晰,更清晰,那么就这样吧。
答案 1 :(得分:3)
Visual Studio 2005(C#2)中引入了.Desinger.cs
,用于将Windows窗体设计器生成的代码与程序员编写的代码分开。该文件的唯一用途是保存设计器生成的InitializeComponent
方法。但是,建议不要将自己的UI代码放在该文件中,因为WinForms设计器会解析文件的内容(实际上只有InitializeComponent
方法)才能在设计器中创建表单。将您自己的代码放在.Designer.cs
文件中是没有意义的。
顺便说一下,WinForms技术的设计方式是你必须使用设计师,否则会遭受很多痛苦!
答案 2 :(得分:1)
*.Designer.cs
只不过是Code File
利用partial class
的力量来保持Application Code
& UI Design
在两个单独的文件中。
由于您手动进行Form
设计,因此无需设计器文件。
*.Designer.cs
包含所有Controls
和方法private void InitializeComponent()
的声明,用于初始化控件!