我有一个名为 Form_Main
的主窗体,当有人想要关闭它时,它将关闭整个应用程序(我所说的整个应用程序也意味着退出其他窗体)。因此,我准备了一个是/否消息框,询问用户是否真的要退出表单。这是我所在的位置:
private void Form_Main_FormClosed(object sender, FormClosedEventArgs e)
{
DialogResult result = MessageBox.Show("Are you sure?", "Confirmation", MessageBoxButtons.OKCancel);
if (result == DialogResult.OK)
{
Environment.Exit(1);
}
else
{
//does nothing
}
}
“确定”按钮有效。但是当用户点击“取消”时,Form_Main
被关闭,但应用程序仍在运行(其他窗体未受影响)。我应该用什么替换 //does nothing
?
最佳答案
使用FormClosing
事件(而不是FormClosed
),然后设置e.Cancel = true
:
private void Form_Main_FormClosing(object sender, FormClosingEventArgs e)
{
var result = MessageBox.Show("Are you sure?", "Confirmation", MessageBoxButtons.OKCancel);
e.Cancel = (result != DialogResult.OK);
}
FormClosing
事件发生在表单实际关闭之前,因此您仍然有机会取消它。当您到达 FormClosed
事件时,为时已晚。
关于c# - 禁止用户关闭表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22350330/