【问题标题】:Winforms Form Constructor vs Load eventWinforms Form Constructor vs Load事件
【发布时间】:2008-11-05 05:25:04
【问题描述】:

加载表单时,代码需要执行诸如设置数据网格、组合框、设置标题等操作。我倾向于始终使用加载事件而不是新的(构造函数)。是否有针对哪些活动最适合哪些活动的指南?

【问题讨论】:

    标签: .net winforms constructor initialization onload-event


    【解决方案1】:

    对 InitializeComponent 的调用会自动插入到表单/页面的构造函数中。 InitializeComponent 是自动生成的方法,

    • 在您的 winform/XAML 页面上创建各种 UI 元素
    • 用存储在资源文件中的值初始化它们的属性

    因此,与 UI 安排/修改相关的任何内容都应此调用之后进行。当您在 Form.OnLoad 的覆盖中执行此操作时,您可以确保 UI 已准备就绪(已调用 InitializeComponent)...所以我会投票支持 UI 的 OnLoad。
    创建非 UI 成员,构造函数将是我首先要看的地方。

    【讨论】:

      【解决方案2】:

      请记住,表单构造函数中的任何内容都将在表单创建时创建/执行。即在:

      Form frm = new Form();

      而 Load 事件中的任何内容只有在表单显示时才会发生,即 frm.Show();

      【讨论】:

      • 请注意,还有一个 Shown 事件。 load 事件发生在窗体显示之前,但当窗口存在并且布局已经完成时。
      【解决方案3】:

      基本上,您希望构造函数尽可能轻量。我尝试将大部分内容放在 Load 事件处理程序中,因为 UI 元素已经创建并且此时可以使用。但是,我通常在构造函数中实例化类对象等,因为它实际上是构造对象的一部分。有时你不能把东西放在一个地方或另一个地方,但在你可以的时候,你应该把它们放在看起来最合适的地方。

      【讨论】:

        猜你喜欢
        • 2010-12-25
        • 2014-02-07
        • 2010-10-16
        • 1970-01-01
        • 2017-03-29
        • 2019-05-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多