我一直在使用Head First C#书并使用了InitializeComponent();方法好几次。
这方面的一个例子是在Party Planner练习中我创建了一个名为DinnerParty.cs的类,然后在Form1.cs中使用了这段代码
public Form1()
{
InitializeComponent();
dinnerParty = new DinnerParty() { NumberOfPeople = 5 };
dinnerParty.SetHealthyOption(checkBox2.Checked);
dinnerParty.CalculateCostOfDecorations(checkBox1.Checked);
DisplayDinnerPartyCost();
}
我的问题是,Initialize Component方法到底是做什么的。我的理解是我定义了一个新的对象或DinnerParty类的实例并设置了所有的值,到目前为止我假设InitializeComponent()有点说“使用以下内容设置我的字段的值:”
我可以请一个BASIC,我可以理解我的定义。我已经看过以前关于这个的帖子和答案,一切都太复杂了。我将标记最容易理解的响应,仍然有关键信息作为答案。
答案 0 :(得分:28)
InitializeComponent 是在您创建/更改表单时由表单设计器自动为您编写的方法。
每个Forms文件(例如Form1.cs)都有一个设计器文件(例如Form1.designer.cs),它包含InitializeComponent方法,泛型 Form.Dispose 的覆盖,以及声明所有用户界面对象,如按钮,文本框,标签和表单本身。
InitializeComponent 方法包含创建和初始化在表单表面上拖动的用户界面对象的代码,其中包含您(程序员)使用表单设计器的属性网格提供的值。由于这个事实在调用InitializeComponent 之前不要尝试与表单或控件交互。
此外,您还可以在此处找到将控件和表单事件链接到您编写的特定事件处理程序以响应用户操作所需的管道。
Form1.cs和Form1.Designer.cs文件中包含的代码是同一个类的一部分,这要归功于partial classes的概念,它可以将代码的两个或多个文件保存在一起,就像单个块一样码。
当然,由于表单设计器执行了大量的更改,对于不尝试手动修改此方法是一个非常好的建议,而有时,我觉得有用的是添加代码为Dispose方法,目的是销毁在表单生命周期中创建的一些非托管对象。
答案 1 :(得分:2)
InitializeComponent是一个用于初始化表单的方法。 它与您的DinnerParty课程无关。
因此,可能会在用户界面上设置按钮,标签,事件处理程序等内容。
这是一个更深入的解释。 What does InitializeComponent() do, and how does it work in WPF?