private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (this.textFlag)
            {
                if(MessageBox.Show("是否将更改保存到 " + this.Text, "提示", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    this.saveFile();         
                //    //string file = this.saveFileDialog1.FileName;
                }
                else 
{
//if (MessageBox.Show("是否将更改保存到 " + this.Text, "提示", 
//MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.No)
// 这个不需要
                {                 //   Application.Exit();   // 这条语句也不需要...
                }
}
            }
        }Application.Exit 执行的时候会又去调用 FormClosing,
而FormClosing 写了Application.Exit ,又回到Application.Exit执行,再去掉FormClosing....
如此循环...
Form1_FormClosing()
{
Application.Exit(); 
}
Application.Exit() 
{
...
Form1_FormClosing();
...
}

解决方案 »

  1.   

    为了避免循环关闭,你可以在Application类里设置一个变量保存是否已经提示过,在两边都判断,如果提示过了,就不再提示和关闭Application,
      

  2.   

    FormClosing中的FormClosingEventArgs e是关键 private void RealForm_FormClosing(object sender, FormClosingEventArgs e)
            {
                e.Cancel = true;
                SysExit();
            }
            private void SysExit()
            {
                String message = "确认退出系统吗?"; // Define message.
                String caption = "测试软件";//   ' Define title;
                MessageBoxButtons buttons = MessageBoxButtons.YesNo;            DialogResult response = MessageBox.Show(this, message, caption, buttons,
                    MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);
                if (response == DialogResult.Yes)
                {                this.Dispose();
                }
            }
      

  3.   

    DialogResult dr = MessageBox.Show("是否将更改保存到 " + this.Text, "提示", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
    if(dr==DialogResult.Yes)
      this.saveFile();
    else
      Application.Exit();
      

  4.   

    Application.Exit(); 
    改成 
    e.Cancel = true;
      

  5.   

    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
            {
                e.Cancel=true;
                if (this.textFlag)
                {
                    if(MessageBox.Show("是否将更改保存到 " + this.Text, "提示", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.Yes)
                    {
                        this.saveFile();         
                    //    //string file = this.saveFileDialog1.FileName;
                    }
                    else if (MessageBox.Show("是否将更改保存到 " + this.Text, "提示", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question) == DialogResult.No)
                    {
                        e.Cancel=false;
                    }
                }
            }
    其实就是不需要退出时,设置e.Cancel=true,要退出时设置e.Cancel=false就可以了