怎么在窗体关闭时,由于窗体中的数据没有完全保存而阻止窗体的关闭? 在C#中,在窗体Form1关闭时,如果Form1中的数据没有完全保存,怎么阻止窗体Form1的关闭?在哪个事件下编写代码? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在事件处理方法中,如果要阻止窗体关闭,执行e.Cancel = True; private void MainForm_FormClosing(object sender, FormClosingEventArgs e) { DialogResult drClose = MessageBox.Show("您确认退出吗?", "退出系统提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1); if (drClose == DialogResult.Cancel) e.Cancel = true; } private void MainFrom_FormClosing(object sender, FormClosingEventArgs e) { if (DialogResult.No == MessageBox.Show("是否退出当前程序?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information)) { e.Cancel = true; } else { e.Cancel = false; } }private void MainFrom_FormClosed(object sender, FormClosedEventArgs e) { Application.Exit(); } bool IsFinished=false;//数据没有保存完毕数据保存方法{bool IsFinished=true;//保存完毕。 bool IsFinished=false;//数据没有保存完毕} private void MainForm_FormClosing(object sender, FormClosingEventArgs e) { if (IsFinished == false) e.Cancel = true; } /// <summary> /// 数据是否保存完成 /// </summary> bool m_IsFinished = false; /// <summary> /// 数据是否保存完成 /// </summary> public bool IsFinished { get { return m_IsFinished; } set { m_IsFinished = value; if (m_IsFinished && IsFormClosed)//如果数据保存完成和窗体已经执行过关闭操作 { this.Close();//自动关闭窗体 } } } /// <summary> /// 窗体是否执行过关闭 /// </summary> bool IsFormClosed = false; /// <summary> /// 窗体关闭时发生(记得要加这个事件哦) /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Form_FormClosing(object sender, FormClosingEventArgs e) { IsFormClosed = true;//设置窗体已经执行过关闭 if (!IsFinished)//如果数据没有保存完成 { e.Cancel = true;//取消关闭事件 } }当数据保存完成后设置属性 IsFinished = true; 这样不好,如果保存后再修改呢?IsFinished仍未true,除非还要监视修改,再把它设置为false,自找麻烦,何必呢?直接在Form_Closing事件中判断数据是否修改就可以了,关键就是你自己要判断是否修改了数据。 参考这个http://topic.csdn.net/u/20110721/14/90ded6e2-d841-4f4b-ae4a-d929b2b8fa6e.html winform打印问题?如何去掉"正在打印"提示窗口,直接打印 请大家帮我分析一下,谢谢! 用dotfuscator混淆了一下我的程序,打开时出错:ArgumentException,VS会弹出调试消息框.为什么? 关于数据库访问层的设计 我想在C#控制台程序中输入一个数字! listBox自动更新? 遇到一个非常奇怪的调试错误,网上根本查不到关键字,高人来指点一下 【在线等】请教关于异步传输的理解 NTP服务器 来大家说一本你认为最好的书(C#中的或是任何.NET中的)欢迎!!! 求助,关于C#的图片浏览器 弱弱的问下 下面几句代码都是什么意思?
e.Cancel = True;
{
DialogResult drClose = MessageBox.Show("您确认退出吗?", "退出系统提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);
if (drClose == DialogResult.Cancel)
e.Cancel = true;
}
{
if (DialogResult.No == MessageBox.Show("是否退出当前程序?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information))
{
e.Cancel = true;
}
else
{
e.Cancel = false;
}
}private void MainFrom_FormClosed(object sender, FormClosedEventArgs e)
{
Application.Exit();
}
{bool IsFinished=true;//保存完毕。
bool IsFinished=false;//数据没有保存完毕}
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
if (IsFinished == false)
e.Cancel = true;
}
/// <summary>
/// 数据是否保存完成
/// </summary>
bool m_IsFinished = false;
/// <summary>
/// 数据是否保存完成
/// </summary>
public bool IsFinished
{
get { return m_IsFinished; }
set
{
m_IsFinished = value;
if (m_IsFinished && IsFormClosed)//如果数据保存完成和窗体已经执行过关闭操作
{
this.Close();//自动关闭窗体
}
}
} /// <summary>
/// 窗体是否执行过关闭
/// </summary>
bool IsFormClosed = false; /// <summary>
/// 窗体关闭时发生(记得要加这个事件哦)
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form_FormClosing(object sender, FormClosingEventArgs e)
{
IsFormClosed = true;//设置窗体已经执行过关闭
if (!IsFinished)//如果数据没有保存完成
{
e.Cancel = true;//取消关闭事件
}
}当数据保存完成后设置属性 IsFinished = true;
http://topic.csdn.net/u/20110721/14/90ded6e2-d841-4f4b-ae4a-d929b2b8fa6e.html