表单关闭时执行代码
本文关键字:执行 代码 表单 | 更新日期: 2023-09-27 18:22:07
我的程序在运行时对注册表进行了一些更改,如果没有正确回滚,可能会给用户带来一些问题。例如,他们可能无法使用互联网连接。
所以我需要确保当他们关闭应用程序时,我会让一切恢复正常。要做到这一点,我需要知道他们什么时候按下了表单的关闭按钮。我该怎么做?有我能处理的事件吗?
您可以订阅一个名为FormClosing
的事件,该事件在FormClose
之前触发,并允许您在表单关闭之前验证/更改所需的设置
public Form1()
{
InitializeComponent();
FormClosing += Form1_FormClosing;
}
void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
// Reset values
}
我认为您需要的不是访问关闭按钮,而是访问关闭窗体时触发的事件。
摘自上一篇SO文章,你可能需要的是这样的东西:
void FormClosed(object sender, FormClosedEventArgs e)
{
// do something useful
}
这里有更多的可能性。
1) 使用以下形式的FormClosing
事件:
private void form_FormClosing(object sender, FormClosingEventArgs e) {
if (e.CloseReason == CloseReason.UserClosing) { // User clicked 'X' button
if (someThing) e.Cancel = true; // Disable Form closing
}
}
2) 您也可以通过将ControlBox
设置为false来隐藏"X"按钮。但这也会隐藏最小化和最大化按钮。
3) 这只会禁用"X"按钮。把它放在你的表格里。
private const int CP_NOCLOSE_BUTTON = 0x200;
protected override CreateParams CreateParams {
get {
new SecurityPermission(SecurityPermissionFlag.UnmanagedCode).Demand();
CreateParams cp = base.CreateParams;
cp.ClassStyle |= CP_NOCLOSE_BUTTON;
return cp;
}
}