表单构造函数与Form_Load

时间:2010-04-12 16:55:18

标签: c# winforms constructor onload

表单构造函数和form_Load方法之间的区别是什么?

您将物品放在一个与另一个之间的过程是什么?

2 个答案:

答案 0 :(得分:27)

不要使用Load事件,重写OnLoad()方法。这可确保从表单类派生时,所有内容都以可预测的顺序运行。您只应将其用于表单初始化,这需要知道实际表单的大小。由于缩放或用户首选项,它可能与设计大小不同,并且在创建本机窗口之前不知道实际大小。

可以在OnLoad方法中初始化控件,但它可能非常慢,特别是对于ListView和TreeView。如果在构造函数中初始化它们,则可以在创建其本机Windows控件时对它们进行批量初始化。

一个特殊的例外:创建一个MDI子窗口应该始终在OnLoad()中完成,管道代码中的一个错误会在构造函数中创建子项时弄乱MDI栏。

答案 1 :(得分:19)

构造函数中的代码在您创建表单时立即运行,无论您是否显示它。在Form.Load事件中运行的代码是一个事件处理程序,因此您实际上可以在其他类(已订阅该表单)中运行代码。同样,您可以(从表单中)使用Form.OnLoad method来运行代码。

表单的Load事件(和OnLoad overridable方法,通常是表单本身中更好的选择)在表单初始化后运行。这通常具有优势,因为所有表单的控件都已构建,更重要的是,所有表单布局都已发生。