窗体关闭事件的Bug

本文关键字:Bug 事件 窗体 | 更新日期: 2023-09-27 18:07:24

我有一个消息框确认退出时,用户单击x图标,它的工作,但我只需要点击按钮是几次,直到它关闭。有人知道为什么或如何我可以解决它吗?

private void Interfaz_FormClosing(object sender, FormClosingEventArgs e)
    {
       DialogResult salir = MessageBox.Show("¿Seguro que desea cerrar el programa?",    "Advertencia", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
        if (salir == DialogResult.Yes)
        {
            Application.Exit();
        }
        else
        {
            e.Cancel = true;
        }

窗体关闭事件的Bug

请测试否。您已经关闭了表单,没有必要调用Application。退出,它将触发对FormClosing

的第二次调用
private void Interfaz_FormClosing(object sender, FormClosingEventArgs e)
{
   DialogResult salir = MessageBox.Show("¿Seguro que desea cerrar el programa?",    "Advertencia", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
    if (salir == DialogResult.No)
        e.Cancel = true;
}

但是,我建议为ClosingReason添加一个测试。

private void Interfaz_FormClosing(object sender, FormClosingEventArgs e)
{
   If(e.CloseReason == CloseReason.UserClosing)
   {
       DialogResult salir = MessageBox.Show("¿Seguro que desea cerrar el programa?",
                            "Advertencia", MessageBoxButtons.YesNo, 
                            MessageBoxIcon.Question);
        if (salir == DialogResult.No)
            e.Cancel = true;
    }
 }