C# Windows 表单关闭错误

C# Windows Form formclosing error

我是编码方面的新手。这是我遇到的问题:

private void pano_FormClosing(object sender, FormClosingEventArgs e)
    {
        DialogResult dialog = MessageBox.Show("Uygulamadan çıkış yapmak istediğinizden emin misiniz?", "Çıkış", MessageBoxButtons.YesNo);
        if (dialog == DialogResult.Yes)
        {
            Application.Exit();
        }
        else if (dialog == DialogResult.No)
        {
            e.Cancel = true;
        }

我使用此代码块的目的是询问用户 "are sure to quit",但不幸的是,当我关闭应用程序时,我收到了 3 次通知 window?知道为什么会这样或有任何解决方案吗?

非常感谢。 努里。

首先,正如史蒂夫指出的那样,删除 'Yes' 部分 - 如果没有明确取消,该事件将因单击而关闭该表单。

现在,针对你的问题。似乎您的警报被调用了两次。我可以通过 static bool close_alert_shown 轻松解决这个问题,当显示第一个警报时,将其设置为 true,这样下一个警报就不会弹出。

最终代码如下所示:

            if (close_alert_shown) return;
            close_alert_shown = true;
            DialogResult dialog = MessageBox.Show("Uygulamadan çıkış yapmak istediğinizden emin misiniz?", "Çıkış", MessageBoxButtons.YesNo);
            if (dialog == DialogResult.No)
            {
                e.Cancel = true;
                close_alert_shown = false;
            }

并在表格顶部(public Form1() 构造函数行之前):

    static bool close_alert_shown = false;

我怀疑当应用程序退出时,它再次调用表单关闭,因为我们已经订阅了该事件。我假设,简单的解决方法是在调用退出之前取消订阅事件。

this.FormClosing-=Form1_FormClosing;
Application.Exit();