关于winform:更新-WinForms-InitializeComponent-的现代代码生成
当你应用 Visual Studio 中的 WinForms Designer 来创立一个 WinForms 表单或用户控件时,它并没有像 XML 或 HTML 那样的非凡定义或文件格式来示意用户界面。从一开始,WinForms 应用的惟一格局就是程序代码。在 WinForms Visual Basic 我的项目中定义的表单或用户控件会被保留到 VB 代码中。在 C# 我的项目中,这就是 C# 代码。这些代码将被搁置在一个专用的 Designer 文件中,该文件位于理论表单代码文件前面,也蕴含管制 UI 的代码。 当你的表单或用户控件须要在 WinForms Designer 中再次关上时,该代码将被解释并依据后果对象图在 Designer 中从新创立表单/用户控件。这就是咱们把保留表单的过程称为 CodeDOM 序列化的起因。这里的 CodeDOM 指的是一种对象模型(Code Document object model,代码文档对象模型),它容许开发人员通过特定类型的对象来定义程序的各个方面或程序的一部分。 尽管 CodeDOM 很灵便,能够比拟容易地进行扩大,并且反对比 Visual Basic 或 C# 更多的语言,然而从现有的代码文件生成 CodeDOM 图是一件齐全不同的事件。尽管 CodeDOM 能够通过现有的编译器实现为特定的语言编写代码文件,但生成的代码格调依然是 .NET 框架刚开始时的格调,在许多状况下曾经不再合乎以后的编码标准。 在 WinForms 中,当你设计一个表单的时候,所有相干的内容都是在每个表单或用户控件的一个办法中生成的。这个办法(还有一些根底构造和初始化代码)叫做 InitializeComponent。 这个办法会被表单的构造函数无条件地调用。在 C# 中,这是非常明显的,你增加到我的项目中的新表单总是具备构造函数和所需的调用: public partial class Form1 : Form { public Form2() { InitializeComponent(); } }在 Visual Basic 中,如果你不显式地增加构造函数 Sub New,Visual Basic 编译器会在后盾主动插入对 InitializeComponent 的调用。但如果你在代码文件中增加了一个构造函数,编辑器也会在 VB 代码中插入对 InitializeComponent 的调用: ...