我希望有人尝试解释它们之间的区别。更具体地说,是示例使用场景。
我正在重构一些窗口窗体代码和一个Form
有一些代码在Form_Load()
事件并且也在protected override void OnLoad()
调用的事件base.OnLoad(e);
现在我跟踪它,覆盖首先触发,然后立即触发事件版本。
那么,通常使用哪一种以及为什么?
您应该始终重写 OnLoad()。仅在以下情况下才适合使用该事件another班级会对这个活动感兴趣。这就是事件的目的。另一个类对 Load 事件感兴趣是非常罕见的,只有在做窗口排列的时候才真正有用。
尽管如此,Load 事件对设计者来说工作得很好,而且 VB6 程序员也对它非常满意。这并不是严重错误,只有当您开始继承表单并且代码不按正确的顺序运行时,您才会遇到麻烦。
现在放入 Load 事件中的大多数代码实际上属于构造函数。仅在以下情况下才需要 OnLoad:
- 您需要知道窗口的确切大小和位置。 OnLoad 是最好的,创建窗口句柄并应用用户首选项(标题和边框大小),并按照 Form.AutoScaleMode 属性的指示重新缩放表单。窗口尚不可见,这是将窗口移动到其他位置或排列子控件的好时机。
- 您有需要 Handle 属性的代码。这是很微妙的,你不能总是分辨出来。在构造函数中包含这样的代码是不健康的,窗口是在构造函数完成之前创建的。它通常会有一个好的结果,但它会使创建表单变得非常慢。从“调用堆栈”窗口可以轻松诊断。
- 避免 MDI 实现中的错误。如果您在父构造函数中创建 MDI 子项,那么您将获得重复的字形,在最大化子项时可见。而是在 OnLoad 中创建子级。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)