繁体   English   中英

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;
        }

我使用此代码块的目的是询问用户“一定要退出”,但是不幸的是,当我关闭应用程序时,我收到了3次通知窗口? 有什么想法为什么会发生或任何解决方案?

非常感谢。 努里。

首先,正如Steve指出的那样,删除“是”部分-如果未明确取消,则该事件将通过单击关闭该表单。

现在,解决您的问题。 好像您的警报被调用了两次。 我可以通过创建一个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();

暂无
暂无

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

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