为什么在c#winforms中的SuspendLayout之前初始化组件

时间:2011-09-17 06:55:49

标签: c# winforms

我正在使用c#.Net fw-3.5,

设计一个Windows窗体

我已经通过designer.cs文件中的c#检查生成的代码

        this.label1 = new System.Windows.Forms.Label();
        this.button1 = new System.Windows.Forms.Button();
        this.textBox1 = new System.Windows.Forms.TextBox();

        this.SuspendLayout();

在SuspendLayout命令之后,所有组件属性都在分配。

我的问题:这是在SuspendLayout之前初始化对象的任何特殊原因吗?

2 个答案:

答案 0 :(得分:2)

这两种方式实际上都没有任何区别 - 它不像组件已经添加到表单,所以它不会放置它们,然后暂停布局,然后更改所有内容

我怀疑如果分配了所有变量并且然后使用了代码,就会更容易生成代码,而不是必须弄清楚各个对象之间是否存在任何依赖关系。 / p>

答案 1 :(得分:1)

因为没有必要事先做。对象初始化与SuspendLayout调用无关,那么为什么之前呢?即使是自动生成的代码也可以逻辑布局。如果我手工编写代码,我会做同样的事情,因为我声明变量尽可能接近它们首次使用的位置(当然,这个例子会使生成过程变得更复杂,所以它们只是在开始时初始化它们。)