C#Windows窗体关闭问题

本文关键字:问题 窗体 C#Windows | 更新日期: 2023-09-27 18:28:34

当用户单击应用程序右上角的红色"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。取消以检查dr是否等于ok,但同样的情况也会发生。

有什么想法吗?

C#Windows窗体关闭问题

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

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。我会修改你的消息框,显示"是"answers"否"按钮,因为我觉得这会让用户更清楚,然后如果用户选择"否",我只会将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