与构造函数方法相比,应该如何使用Form.Load事件?

初始化控件的属性或与表单I相关的其他值时,在初始化Form的构造函数中的值之间来回切换,然后在引发Form.Load事件时。

Forms构造函数与它的Form.Load事件的普遍接受使用是什么? 对于其他类,我将在构造函数中进行所有初始化。 然而,在VS中双击一个Form时,它会跳转到Form.Load事件的事件处理程序而不是构造函数。 这使我相信在Load事件而不是构造函数之后进行所有初始化是更可取的。

是的,它有点令人伤心,它的工作方式。 它在当时很有意义,现在已经是10年前了。 Windows Forms的目标是取代当时占主导地位的点击式UI设计器VB6。 Form_Load在VB6中非常重要 ,这是您自定义表单视图的地方。

从一开始就不太合适,Form类有一个真正的构造函数。 并且您可以在创建实际本机Window控件之前在构造函数中设置控件属性。 WF中有大量代码可以完成这项工作。 设计人员依赖的代码,它在Load事件触发之前设置这些属性。 这样做非常有效,许多控件在创建窗口后需要更新时会慢得多。 像ListView和TreeView一样。

没有像设计师那样自己使用构造函数的原因很少,特别是因为C#IDE不会试图隐藏构造函数。 除了一个:当您编写需要了解实际表单大小的代码时,您需要 Load事件。 在窗口实际创建之前,该大小是未知的,Load事件是最早的。 这应该是罕见的。

当然,如果您确实想使用Load,则覆盖OnLoad而不是使用Load事件。 那将是另一个。

双击设计器中的任何控件(包括表单)时,您将跳转到该控件的最常见事件处理程序。 这并不意味着在那里做任何事情都是可取的 – 只是有人认为它是最有可能的事件处理程序。

表单的Load事件通常在创建所有控件之后发生。 构造函数事先发生。 根据您正在实施的逻辑,在一种方法或另一种方法中处理某些操作可能是有益的。 例如,初始化许多值最好在构造函数中完成:如果值影响表单的布局或内容,您可能会发现正在创建一个“浪费”的控件层次结构,当您更改值时,该层次结构会重建。 将初始化放在构造函数中可能会让表单第一次正确构建自身 – 这样性能更高,可能会避免一些错误。

最终,这两种方法都有其用途 – 查看代码的作用并选择合适的方法。

我总是使用构造函数,几乎从不使用form.Load事件,除非我不能没有。 原因是因为构造函数可以在Load事件不能真正接收时接收参数。

它更有用