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();
...
}
{
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();
...
}
{
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();
}
}
if(dr==DialogResult.Yes)
this.saveFile();
else
Application.Exit();
改成
e.Cancel = true;
{
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就可以了