C# 窗口(窗体)事件的加载顺序

窗体启动时触发的事件和顺序

  1. From构造函数
  2. Load()
  3. Shown()
  4. Activated()

构造函数

初始化窗体、控件等

Load()

初始化窗体、加载窗体资源(窗体上的各种控件)

通常对窗体的赋值,都是写在 Load() 里面

触发时机

调用 Show() 或 ShowDialog() 显示窗口后,执行 Load() 函数

耗时代码:将耗时操作写在该 函数中,会影响窗口显示速度,即:耗时操作执行后才显示窗口

Shown()

Load()方法结束后,执行 Shown() 方法。
Shown:只有在首次显示窗体时(设置窗体属性 Visible=true 或 form.show()),才会引发 Shown 事件
之后执行的最小化、最大化、还原、隐藏、显示或无效化和重新绘制操作都不会引发该事件

Activated()

窗体每次获得焦点均会触发(从别的窗体或对话框切回来时)。可触发多次

耗时代码:将耗时操作写在该 函数中,然后显示到窗口中,不影响窗口显示速度,也不会无响应,但不会立即显示,而是耗时操作执行后才显示

应用程序关闭时执行事件顺序

会以下列顺序引发主要表单的关闭事件:

System.Windows.Forms.Form.Closing
System.Windows.Forms.Form.FormClosing
System.Windows.Forms.Form.Closed
System.Windows.Forms.Form.FormClosed
System.Windows.Forms.Form.Deactivate

参考:

https://blog.csdn.net/weixin_42182713/article/details/103144434

https://blog.csdn.net/qq_38715413/article/details/111589642

https://learn.microsoft.com/zh-cn/dotnet/desktop/winforms/order-of-events-in-windows-forms?view=netframeworkdesktop-4.8&redirectedfrom=MSDN