退出双重确认程序

时间:2013-11-17 20:01:59

标签: c#

不知怎的,我不知道我的程序需要第二次确认退出...我怎么能删除它?

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;
    }
}

2 个答案:

答案 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;
     }