退房时双重确认

时间:2011-01-07 02:36:10

标签: c# winforms exit confirm

我正在努力让用户在c#中提示确认退出我的程序,但出于某种原因,如果他们说“是”他们想要退出,则会再次弹出确认框。我无法弄清楚原因。

    if (MessageBox.Show("Are you sure you want to exit?", "Confirm exit", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
    {
        e.Cancel = true;
    }
    else { Application.Exit(); }

4 个答案:

答案 0 :(得分:8)

使用此

 private void frmMain_FormClosing(object sender, FormClosingEventArgs e)
    {
        if (MessageBox.Show("Are you sure you want to close?", "Infomate", MessageBoxButtons.YesNo) == DialogResult.No)
        {
            e.Cancel = true;
        }        
    }

答案 1 :(得分:4)

啊,你检查CloseReason FormClosing事件了吗?我认为你可能会因为两个不同的原因得到同样的事件(虽然我并不认为这是正常发生的);检查您的FormClosingEventArgs以查看参数。

答案 2 :(得分:3)

啊,我想出了如何修复它。我删除了Application.Exit();来自FormClosing事件的事件,并将其移动到FormClosed事件中。这一切现在都有效。

答案 3 :(得分:0)

作为 SFD,他说您需要使用消息框创建事件。如果用户关闭表单和警告消息框,我添加了过滤器:

    private void close_confirmation(object sender, FormClosingEventArgs e)
    {
        if (e.CloseReason == CloseReason.FormOwnerClosing)
        {
            if (MessageBox.Show("Are you sure you want to close?", "Application", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.No)
            {
                e.Cancel = true;
            }
        }
    }

您需要将事件分配给表单以使其工作:

this.FormClosing += new FormClosingEventHandler(close_confirmation);

如果您想让它停止以便用户可以再次关闭窗口而不显示消息:

this.FormClosing -= close_confirmation;