日期:2014-05-17  浏览次数:20880 次

请帮我看下下面这个问题!!!
程序功能描述:

Form1中一个button 一个panel 一个pictureBox

Form1的pictureBox事件代码如下:

 private void pictureBox1_Click(object sender, EventArgs e)
  {
  if (MessageBox.Show("您确定要关闭当前程序,是否继续?", "询问", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
  {
  Application.Exit();
  }
  }

点击Form1中的button调用Form2,在Form2的FormClosing事件写如下代码:
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
  {
  if (MessageBox.Show("您确定要关闭当前窗体,是否继续?", "询问", MessageBoxButtons.OKCancel) == DialogResult.OK)
  {
  e.Cancel = false;
  this.Dispose();
  }
  else
  {
  e.Cancel = true;
  }
  }

操作程序 先执行Form2的FormClosing事件关闭Form2;再点击pictureBox1的Click事件关闭Form1程序没有问题
但是如果不关闭Form2,而直接点击关闭Form1
程序将弹出上面两段代码的提示:分别点“是”(即关闭)后
在pictureBox1的Click事件

Application.Exit();
这句代码中 报出提示:

未处理InvalidOperationException
集合已修改;可能无法执行枚举操作。


而上面两个代码中不论Form1或Form2的关闭事件选择“否”(不关闭),则整个程序不关闭。

------解决方案--------------------
Application.Exit();换成this.Close()