gpt4 book ai didi

.net - Form_Load() 'event' 或覆盖 OnLoad()

转载 作者:行者123 更新时间:2023-12-03 10:41:40 26 4
gpt4 key购买 nike

我希望有人尝试解释这些之间的区别。更具体地说,示例使用场景。

我正在重构一些 Windows 窗体 代码和 FormForm_Load() 中有一些代码事件,也在 protected override void OnLoad()调用 base.OnLoad(e); 的事件现在我跟踪了它,覆盖首先触发,然后立即触发事件版本。

那么,通常使用哪一种,为什么?

最佳答案

您应该始终覆盖 OnLoad()。仅当另一个类(class)对该事件感兴趣时才适合使用该事件。这是什么事件。另一个对 Load 事件感兴趣的类是非常罕见的,只对进行窗口排列很有用。

尽管如此,Load 事件对设计者来说效果很好,而且 VB6 程序员对它非常熟悉。这并没有大错,只有当您开始继承表单并且代码没有以正确的顺序运行时,您才会遇到麻烦。

现在放入 Load 事件中的大多数代码实际上都属于构造函数。在以下情况下,您只需要 OnLoad:

  • 您需要知道窗口的确切大小和位置。 OnLoad 最好,创建窗口句柄并应用用户首选项(标题和边框大小),并按照 Form.AutoScaleMode 属性的指示重新缩放表单。窗口尚不可见,这是将窗口移动到其他地方或安排子控件的好时机。
  • 您有需要 Handle 属性的代码。这是微妙的,你不能总是说出来。在构造函数中使用这样的代码是不健康的,窗口在构造函数完成之前被创建。它通常会有一个好的结局,但它会使创建表单非常缓慢。易于从“调用堆栈”窗口进行诊断。
  • 避免 MDI 实现中的错误。如果您在父构造函数中创建 MDI 子项,那么您将获得重复的字形,当您最大化子项时可见。而是在 OnLoad 中创建子项。
  • 关于.net - Form_Load() 'event' 或覆盖 OnLoad(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3670806/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com