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();
我是编码方面的新手。这是我遇到的问题:
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();