![]() |
1
71
使用了vb6的程序员倾向于在加载事件中放入大量代码,在vb6中,该事件用于初始化表单。但这在Windows窗体中不再适用,窗体类可以有一个构造函数。NET方法是在构造函数中初始化类对象,很少有令人信服的理由不为窗体类这样做。 加载事件在窗体的窗口句柄创建之后运行,就在用户看到它之前运行。您应该只在依赖于创建句柄的事件处理程序中编写代码。除了一种代码:需要知道窗口大小和位置的代码外,没有符合此要求的代码负载。 当窗体在另一台计算机上运行时,窗体的设计时大小和位置属性值与实际值不同。表单可以重新缩放以适应目标计算机上的系统字体大小或视频适配器DPI设置。用户首选项也起作用,用户可能为窗口标题选择了不同的字体大小。您通常不关心其中的任何一个,除非您希望窗口在桌面上具有特定位置或与其他窗口对齐。 在执行初始化TreeView或ListView控件等操作的Load事件中编写代码实际上会大大缩短启动时间。在构造函数中进行此操作时,Windows窗体还不必更新物理窗口,它还没有被创建。创建本机控件后,WinForms会使用批量更新来初始化它,而不是像在加载事件中运行代码时那样一次更新一个节点/项。大的不同。 最后但不是最不重要的:您不应该使用加载事件,您应该重写onload()方法。这可以确保当您(或其他人)从窗体类继承时,代码以可预测的顺序运行。IntelliSense帮助您编写此方法,只需键入“protected onl”,然后按Tab让IntelliSense自动完成此方法。注意,在base.onload()调用之前或之后,您可以选择如何放置代码,这就是控制谁是老板的方法。你是老板,当你把它放在后,往往不是正确的选择btw。 |
![]() |
2
10
快看一眼 Use Constructor in Windows Forms to Ensure Proper Initialization
|
![]() |
KiraHoneybee · 具有构造函数参数的模板化类 3 年前 |
![]() |
nick2225 · 隐式调用复制构造函数? 3 年前 |
![]() |
nohaga · 为什么在本例中p3需要默认构造函数? 3 年前 |
![]() |
Aadil Hoda · 为什么类类型的成员需要初始化? 3 年前 |
![]() |
EloiGG · 具有任意类型的变量的可数的C++函数 3 年前 |