C# 窗口(窗体)事件的加载顺序 作者:马育民 • 2025-03-13 10:17 • 阅读:10009 # 窗体启动时触发的事件和顺序 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 原文出处:https://malaoshi.top/show_1GWkc5vOU8h.html