16

我一直在研究 Head First C# 书并使用了 InitializeComponent(); 方法多次。

这方面的一个例子是在派对策划练习中,我创建了一个名为 DinnerParty.cs 的类,然后在 Form1.cs 中使用了这个代码

public Form1()         
        {        
            InitializeComponent(); 
            dinnerParty = new DinnerParty() { NumberOfPeople = 5 };
            dinnerParty.SetHealthyOption(checkBox2.Checked);
            dinnerParty.CalculateCostOfDecorations(checkBox1.Checked);
            DisplayDinnerPartyCost();
        }

我的问题是,初始化组件方法到底在做什么。我的理解是,我正在定义一个新对象或 DinnerParty 类的实例并设置所有值,到目前为止,我假设 InitializeComponent() 有点像“使用以下内容设置我的字段的值:”

我可以请一个 BASIC,我可以理解定义。我看过以前的帖子和关于这个的答案,一切都太复杂了。我将标记仍然具有关键信息的最容易理解的响应作为答案。

4

2 回答 2

33

InitializeComponent是表单设计器在您创建/更改表单时自动为您编写的方法。

每个表单文件(例如 Form1.cs)都有一个设计器文件(例如 Form1.designer.cs),其中包含 InitializeComponent 方法、通用Form.Dispose的覆盖以及所有用户界面对象(如按钮、文本框)的声明、标签和表单本身。

InitializeComponent方法包含的代码使用您(程序员)使用表单设计器的属性网格提供的值创建和初始化拖动到表单表面上的用户界面对象。由于这个事实,在调用 InitializeComponent 之前不要尝试与表单或控件进行交互
此外,您还可以在此处找到将控件和表单事件链接到您为响应用户操作而编写的特定事件处理程序所需的管道。

Form1.cs 和 Form1.Designer.cs 文件中包含的代码是同一类的一部分,这要归功于分部类的概念,可以将两个或多个代码文件像单个代码块一样保存在一起。

当然,由于表单设计器执行了大量的更改,因此不要尝试手动修改此方法是一个非常好的建议,而有时,我发现向 Dispose 方法添加代码以销毁是很有用的在表单生命周期中创建的一些非托管对象。

于 2012-09-06T09:43:07.623 回答
2

InitializeComponent 是一种用于初始化表单的方法。它与您的 DinnerParty 课程无关。

因此,它可能会在您的用户界面上设置按钮、标签、事件处理程序等内容。

这是更深入的解释。 InitializeComponent() 有什么作用,它在 WPF 中是如何工作的?

于 2012-09-06T09:38:11.853 回答