不知怎的,我不知道我的程序需要第二次确认退出...我怎么能删除它?
private void MainProg_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult dialog = MessageBox.Show("Θέλετε πραγματικά να κλείσει η εφαρμογή?",
"Κλείσιμο", MessageBoxButtons.YesNo);
if (dialog == DialogResult.Yes )
{
Application.Exit();
}
else if (dialog == DialogResult.No)
{
e.Cancel = true;
}
}
答案 0 :(得分:2)
您对Application.Exit
的来电会导致第二次拨打MainProg_FormClosing
。退出应用程序会自动处理;对Application.Exit
的调用是不必要的。
您只需删除对Application.Exit
的调用即可阻止第二个确认对话框:
DialogResult dialog = MessageBox.Show("Θέλετε πραγματικά να κλείσει η εφαρμογή?",
"Κλείσιμο", MessageBoxButtons.YesNo);
if (dialog == DialogResult.No)
{
e.Cancel = true;
}
编辑添加:
如果您需要拨打Application.Exit
(例如,多个消息泵),则可以在Application.Exit
呼叫导致表单关闭时取消对话:
private void MainProg_FormClosing(object sender, FormClosingEventArgs e)
{
// Add this line:
if (e.CloseReason == CloseReason.ApplicationExitCall) return;
// remainder of code as in original:
DialogResult dialog = MessageBox.Show("Θέλετε πραγματικά να κλείσει η εφαρμογή?",
"Κλείσιμο", MessageBoxButtons.YesNo);
if (dialog == DialogResult.Yes )
{
Application.Exit();
}
else if (dialog == DialogResult.No)
{
e.Cancel = true;
}
}
答案 1 :(得分:0)
使用FormClosing
时问题是你是Application.Exit
因为Application.Exit
还调用了FormClosing
所以你需要这样做
DialogResult dialog = MessageBox.Show("Θέλετε πραγματικά να κλείσει η εφαρμογή?",
"Κλείσιμο", MessageBoxButtons.YesNo);
if (dialog == DialogResult.Yes)
{
e.Cancel = false;
}
else if (dialog == DialogResult.No)
{
e.Cancel = true;
}