C#Windows Form_Closing问题

时间:2016-01-01 05:16:21

标签: c# windows forms

当用户点击红色" X"时,我似乎很难弹出一个对话框并且功能正常。应用程序右上角的按钮。我可以让Dialog看起来问他们是否真的要关闭应用程序,但不管他们点击什么,它都会关闭表单。我的代码如下;

            private void Main_FormClosing(object sender, FormClosingEventArgs e)
    {
        DialogResult dr = MessageBox.Show("Are you sure want to close?", "Close Program", MessageBoxButtons.OKCancel);
        if (dr == DialogResult.Cancel)
        {
            e.Cancel = false;
        }
    }

我也试过代替e.Cancel来检查dr是否等于ok但是同样的情况发生了。

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

e.Cancel = true;取消操作。它默认为false。你没有在任何地方把它设置为真。试试这个。

private void Main_FormClosing(object sender, FormClosingEventArgs e)
{
    DialogResult dr = MessageBox.Show("Are you sure want to close?", "Close Program", MessageBoxButtons.OKCancel);
    if (dr == DialogResult.Cancel)
    {
        e.Cancel = true;
    }
}

oneliner:

e.Cancel = MessageBox.Show("Are you sure want to close?", "Close Program", MessageBoxButtons.OKCancel) == DialogResult.Cancel;

答案 1 :(得分:0)

问题是您永远不会将e.Cancel设置为true。我会修改你的消息框以显示Yes和No按钮,因为我觉得它让用户更清楚,然后如果用户选择No,我只需将e.Cancel设置为true。

private void Main_FormClosing(object sender, FormClosingEventArgs e)
{
    DialogResult dr = MessageBox.Show("Are you sure want to close?", "Close Program", MessageBoxButtons.YesNo);
    e.Cancel = dr == DialogResult.No;
}

答案 2 :(得分:0)

Closing事件在表单关闭时发生。关闭表单时,将释放在对象中创建的所有资源,并处理表单。如果您取消此活动,表单将保持打开状态。 要取消对表单的关闭,请将传递给事件处理程序的CancelEventArgs的Cancel属性设置为true。

e.Cancel = true;