如果用户想通过单击退出图标或按 ALT+F4 退出应用程序,我想制作一个对话框询问用户是否真的确定要退出。
如何在应用程序实际关闭之前捕获此事件?
查看表单的OnClosing事件。
以下是该链接的摘录,实际检查文本字段的更改并提示保存:
private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
// Determine if text has changed in the textbox by comparing to original text.
if (textBox1.Text != strMyOriginalText)
{
// Display a MsgBox asking the user to save changes or abort.
if(MessageBox.Show("Do you want to save changes to your text?", "My Application",
MessageBoxButtons.YesNo) == DialogResult.Yes)
{
// Cancel the Closing event from closing the form.
e.Cancel = true;
// Call method to save file...
}
}
}
您可以更改文本以满足您的需要,然后我认为您可能希望根据您的文本切换DialogResult.Yes
到。DialogResult.No
这是一些专门为您修改的代码:
private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
if(MessageBox.Show("Are you sure you want to quit?", "My Application", MessageBoxButtons.YesNo) == DialogResult.No)
{
e.Cancel = true;
}
}
您应该订阅 Form_Closing 事件
在那里发布一个对话框,如果用户中止关闭,请将 FormCloseEventArgs.Cancel 设置为 true。
例如在 Form_Load 或使用设计器,订阅事件
Form1.FormClosing += new FormClosingEventHandler(Form1_Closing);
....
private void Form1_FormClosing(Object sender, FormClosingEventArgs e)
{
DialogResult d = MessageBox.Show("Confirm closing", "AppTitle", MessageBoxButtons.YesNo );
if(d == DialogResult.No)
e.Cancel = true;
}
视情况而定,用这种处理方式惹恼用户并不总是一件好事。
如果您有宝贵的修改数据并且不希望冒险丢失更改,那么这样做总是一件好事,但如果您仅将其用作关闭操作的确认,那么最好什么也不做。
您可以为此处理Form_Closing
orForm_Closed
事件。
在 Visual Studio 中,单击闪电图标并向下滚动到表单属性列表中的这些事件。双击您想要的,它将为您连接事件。
这只是一种形式吗?如果是这样,您可能想要使用FormClosing
允许您取消它的事件(显示对话框,CancelEventArgs.Cancel
如果用户选择取消关闭,则设置为 true)。
如果你在谈论windows forms
,应该足以赶上你的MainWindow 的
FormClosing事件,如果您想阻止关闭,只需将事件处理程序的参数设置为true
.
例子:
private void Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
if(MessageBox.Show("Do you really want to exit?", "My Application",
MessageBoxButtons.YesNo) == DialogResult.No){
// SET TO TRUE, SO CLOSING OF THE MAIN FORM,
// SO THE APP ITSELF IS BLOCKED
e.Cancel = true;
}
}
}