Windows窗体中事件“Form.Load”,“Form.Shown”和“Form.Activated”的顺序
Form.Load , Form.Shown和Form.Activated事件之间有什么区别? 他们被解雇的顺序是什么?
而且, Form.Activate
事件可以被多次触发。 例如,如果您从窗体中打开消息框,并且单击该消息框的任何button,然后返回到窗体,则会触发Form.Activate
。 其他任何对话框(如FileOpenDialog
也是如此。
请参阅Windows窗体事件生命周期 :
- 移动:表单移动时发生此事件。 虽然默认情况下,当一个表单被实例化并启动时,用户不会移动它,但是这个事件在Load事件发生之前被触发。
- 加载:此事件发生在首次显示表单之前。
- VisibleChanged:Visible属性值更改时发生此事件。
- 已激活:当代码或用户激活表单时发生此事件。
- 如图所示:无论何时第一次显示表格,都会发生此事件。
- Paint:重绘控件时发生此事件。
- 取消激活:当表单失去焦点并且不是活动表单时发生此事件。
- closures:表单closures时发生此事件。
- closures:表单closures时发生此事件。
-
Load
事件在表单初始化后触发,在它的句柄被创build之后,但在它被显示之前。 -
当您调用
form.Show()
(或form.Visible = true
)时,Shown
事件会在第一次显示窗体后触发。
如果你隐藏你的表格,然后再次Shown
,Shown
将再次触发。 (但Load
不会) -
当用户切换到您的表单时,
Activate
事件触发。
如果用户切换到不同的程序(或表格),然后切换回您的表格,Activate
将再次触发。
Form和Control类公开了一组与应用程序启动和closures相关的事件。 当Windows窗体应用程序启动时,主窗体的启动事件按以下顺序引发:
Control.HandleCreated Control.BindingContextChanged Form.Load Control.VisibleChanged Form.Activated Form.Shown
当应用程序closures时,主窗体的closures事件按以下顺序提出:
Form.Closing Form.FormClosing Form.Closed Form.FormClosed Form.Deactivate
重点和validation事件
当您通过使用键盘(TAB,SHIFT + TAB等),通过调用Select或SelectNextControl方法,或通过将ActiveControl属性设置为当前窗体来更改焦点时,Control类的焦点事件发生在以下订购:
Enter GotFocus Leave Validating Validated LostFocus
当您使用鼠标或通过调用Focus方法更改焦点时,Control类的焦点事件按以下顺序进行:
Enter GotFocus LostFocus Leave Validating Validated
顺序是Form.Load
,它初始化窗体并调用控件Form.Shown
,它将框架标记为可见的(即使在C ++中 ,这是在创build窗体之后完成的)和Form.Activated
,它给出论坛重点。