繁体   English   中英

C#Windows Form_Closing问题

[英]C# Windows Form_Closing Issue

当用户单击应用程序右上角的红色“ X”按钮时,我似乎很难弹出对话框并正常运行。 我可以使对话框出现,询问他们是否真的要关闭应用程序,但是无论他们单击什么,它都会关闭表单。 我的代码如下;

            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,但同样的情况也会发生。

有什么想法吗?

e.Cancel = true; 取消操作。 默认为false 您没有在任何地方将其设置为true。 尝试这个。

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;

问题是您永远不会将e.Cancel设置为true 我会修改您的消息框以显示“是”和“否”按钮,因为我认为它使用户更清楚,然后如果用户选择“否”,我将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;
}

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

e.Cancel = true;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM