窗体生命周期事件#
来源:
D:\study\C#1\WinForm\0804-作业\0804-作业
窗体从创建到销毁会触发一系列事件,理解生命周期可以把握「初始化放哪里、清理放哪里」。
1. 生命周期顺序#
new Form() 构造函数(只执行一次)
↓
Load 窗体加载完成,首次显示前
↓
Shown 窗体显示后
↓
……(运行中:Paint / Resize / 各种交互事件)
↓
FormClosing 关闭前(可以取消)
↓
FormClosed 关闭后(无法取消)
↓
Dispose 资源释放
2. 各事件详解#
Load — 窗体加载时#
// 首次显示前触发,最常用的初始化位置
private void Form1_Load(object sender, EventArgs e)
{
// 初始化数据、加载列表、读取配置文件
toolStripStatusLabel3.Text = "日期:" + DateTime.Now.ToString();
}
FormClosing — 关闭前(可阻止关闭)#
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
// e.Cancel = true; // 取消关闭
DialogResult res = MessageBox.Show("是否关闭?", "提示",
MessageBoxButtons.OKCancel);
if (res == DialogResult.Cancel)
e.Cancel = true; // 用户点取消 → 阻止关闭
}
FormClosed — 关闭后(无法阻止)#
3. 实战:关闭确认(计算器项目源码)#
private void Fr_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult dialogResult =
MessageBox.Show("是否关闭", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
if (dialogResult == DialogResult.Cancel)
{
e.Cancel = true; // 点取消则不关闭
}
}
4. 注意事项#
| 事件 | 能否阻止 | 常见用途 |
|---|---|---|
Load |
— | 初始化数据 |
Shown |
— | 显示后的动画、首次聚焦 |
FormClosing |
能(e.Cancel) |
关闭确认、保存提示 |
FormClosed |
不能 | 资源清理 |
Dispose |
不能 | 释放非托管资源 |
💡 要点: -
FormClosing可以阻止关闭(e.Cancel = true),FormClosed在关闭后触发,无法阻止。 - 构造函数里访问控件要在InitializeComponent()之后,而「读文件、加载列表」这类操作建议放Load事件(此时窗体已完全初始化)。
相关笔记#
- 事件的基本使用 — 事件机制
- 打开新窗口 Show 与 ShowDialog — 多窗体