在Load事件中或在InitializeComponent()之后的构造函数中?
还是完全没有关系?
还是完全没有关系?
对于较重的初始化,通常在加载事件中完成。构造函数通常用于快速、简单的字段初始化。例如,如果您必须调用外部依赖项的方法,则应该从加载事件中进行。
在加载事件中进行较重的初始化可能不是一个好主意,因为它可能会增加加载时间并且会让最终用户感到烦恼。我更喜欢在表单加载时进行基本的初始化(例如...需要<10秒),并在显示给用户后进行其余的重要工作。为了让用户等待,可以显示进度指示器。
这取决于初始化的类型。例如,简单的字段初始化可以在构造函数中完成,这样可以避免您必须挂钩事件、有额外方法等。
然而,在某些情况下,构造函数没有您需要的信息。例如,如果您想根据是处于设计模式还是运行模式来执行不同的操作(例如,在运行模式下,您将连接到数据源,但在设计模式下,您想显示示例数据),那么必须推迟到构建之后,因为框架直到对象构建后才设置DesignMode。
想象一下,如果您两次运行相同的窗体时运行Show
或ShowDialog
会发生什么。那两个调用之间不能更改的所有内容都应该在构造函数中;所有依赖于相应的Show(Dialog)调用的初始化代码必须在事件处理程序中,每个调用都将调用该处理程序。例如,窗体的所有者是通过ShowDialog
传递的,而不是在构造函数中,对于2个不同的ShowDialog
调用可能不同,因此所有依赖于所有者的内容都不应该在构造函数中。