代码之家  ›  专栏  ›  技术社区  ›  Ananth

Windows窗体中事件'Form.Load'、'Form.Shown'和'Form.Activated'的顺序

  •  48
  • Ananth  · 技术社区  · 16 年前

    形式有什么区别 Form.Load , Form.Shown 和 Form.Activated 事件?他们被解雇的顺序是什么?

    5 回复  |  直到 10 年前
        1
  •  67
  •   Galwegian    16 年前

    见 Windows Forms Events Lifecycle :

    • 移动:移动窗体时发生此事件。尽管在默认情况下,当一个表单被实例化并启动时,用户不会移动它,但是这个事件是在加载事件发生之前触发的。
    • 加载:此事件发生在第一次显示窗体之前。
    • VisibleChanged:当Visible属性值更改时发生此事件。
    • 激活:当表单在代码中激活或由用户激活时,会发生此事件。
    • 显示:每当窗体首次显示时,都会发生此事件。
    • 绘制:此事件在控件重新绘制时发生。
    • 停用:当窗体失去焦点且不是活动窗体时,会发生此事件。
    • 关闭:此事件在窗体关闭时发生。
    • 关闭:关闭窗体时发生此事件。
        2
  •  22
  •   SLaks    16 年前
    • 这个 Load 当窗体初始化时,在创建其句柄之后但在显示窗体之前激发事件。

    • 这个 Shown 当您调用 form.Show() (或) form.Visible = true )
      如果你把你的表格藏起来,然后再展示一次, 展示 会再次开火。(但是 负载 不会)

    • 这个 Activate 当用户切换到窗体时激发事件。
      如果用户切换到其他程序(或窗体),则切换回窗体, 激活 会再次开火。

        3
  •  13
  •   Mariusz Jamro    10 年前

    此外, Form.Activate 可以多次激发事件。例如,如果从表单中打开一个消息框,然后单击该消息框的任意按钮,然后返回表单, 激活形式 被解雇了。对于任何其他对话框,如 FileOpenDialog .

        4
  •  6
  •   Taja_100    10 年前

    窗体和控件类公开了一组与应用程序启动和关闭相关的事件。当Windows窗体应用程序启动时,主窗体的启动事件将按以下顺序引发:

    Control.HandleCreated
    Control.BindingContextChanged
    Form.Load
    Control.VisibleChanged
    Form.Activated
    Form.Shown
    

    当应用程序关闭时,主窗体的关闭事件按以下顺序引发:

    Form.Closing
    Form.FormClosing
    Form.Closed
    Form.FormClosed
    Form.Deactivate
    

    焦点和验证事件

    使用键盘(tab、shift+tab等)、调用Select或SelectNextControl方法或将ActiveControl属性设置为当前窗体来更改焦点时,控件类的焦点事件按以下顺序发生:

    Enter
    GotFocus
    Leave
    Validating
    Validated
    LostFocus
    

    使用鼠标或调用Focus方法更改焦点时,控件类的焦点事件按以下顺序发生:

    Enter
    GotFocus
    LostFocus
    Leave
    Validating
    Validated
    
        5
  •  3
  •   Peter Mortensen Pieter Jan Bonestroo    13 年前

    订单是 Form.Load ,初始化窗体并调用控件, Form.Shown 将框架标记为可见(即使在 C++ ,这是在创建表单之后完成的),并且 Form.Activated 使论坛成为焦点。

    推荐文章