【发布时间】:2015-05-21 09:38:33
【问题描述】:
正如我在标题中所说,我正在创建一个程序。但是,我面临FormClosing 事件执行两次的问题。出现消息框并且按钮很好地执行了它们的目的,但是当我单击“是”或“否”时,它会重复出现。幸好“取消”按钮没有这个问题。
private void Form1_FormClosing (object sender, FormClosingEventArgs e)
{
DialogResult dialog = MessageBox.Show("Do you want to save your progress?", "Media Cataloguer", MessageBoxButtons.YesNoCancel);
if (dialog == DialogResult.Yes)
{
SaveFileDialog savefile = new SaveFileDialog();
savefile.Filter = "Text files|*.txt";
savefile.Title = "Save As";
savefile.ShowDialog();
System.IO.FileStream fs = (System.IO.FileStream)savefile.OpenFile();
Application.Exit();
}
else if (dialog == DialogResult.No)
{
MessageBox.Show("Are you sure?", "Media Cataloguer", MessageBoxButtons.YesNo);
Application.Exit();
}
else if (dialog == DialogResult.Cancel)
{
e.Cancel = true;
}
}
我发现没有其他任何东西对我有很大帮助。就像我之前说的,消息框出现了两次。那是我唯一的问题。这个 void 的其他一切工作正常。
【问题讨论】:
-
如果删除 Application.Exit(); 会发生什么从你的代码?可能是表单正在关闭并且您调用 Application.Exit();哪个再次触发事件?
-
能否贴出调用Form1_FormClosing的代码
-
听起来你注册了两次事件处理程序。检查您自己和设计器生成的代码。
-
订阅两次可能是个问题,Application.Exit() 也可能。如果您没有提出解决方案,您可能希望在您的方法之上设置一个标志,以将关闭过程标记为正在运行。并且只有在关闭过程尚未运行时才继续执行该方法。
标签: c# winforms formclosing