[英]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.