日期:2014-05-19  浏览次数:20991 次

求助:我实现了窗体退出时询问是否关闭,但是~~
我实现了窗体退出时询问是否关闭,但是~~
里面内容没有更改时也会询问,如何实现没有更改就不要询问啊?
谢谢!!
还有,我还不会散分啊,老大们教我啊,我也好散分给你们以示我的谢意啊

------解决方案--------------------
你可以在窗体里设置一个标志用来表示是否有数据改动,在窗体关闭的时候检查这个标志如果为True则提示保存.

在窗体初始的时候标志为False表示未改动过数据,一定数据有改动就设置为True,表示数据被改动了.然后在关闭的时候检查这个值是否为True决定是否提示用户保存.
------解决方案--------------------
那你就先把本窗体的数据先保存起来。。。
在你退出的时候
判断一下退出时窗体的数据是否和你之前保存起来的数据一致
如果一致就不提示了
------解决方案--------------------
参考如下的代码:

protected override void OnFormClosing(FormClosingEventArgs e)
{
if (this.m_DataChanged)
{
DialogResult dr = MessageBox.Show(this, "数据有改动,是否保存 ", "提示 ", MessageBoxButtons.YesNoCancel);
if (dr== DialogResult.Yes)
{
this.SaveData();
}
else if (dr == DialogResult.Cancel)
{
e.Cancel = true;
}
}
base.OnFormClosing(e);
}
------解决方案--------------------
大哥,他说的是窗体数据内容如果不变,就不弹出messBox
呵呵,不是问怎么接收yes ,no
------解决方案--------------------
那你这样行不行,你的数据不都是在textbox里面么,你这样
设定一个全局的bool a=false;string bb;
private void textBox1_GotFocus(object sender, EventArgs e)
{
//当你要更改的文本获得焦点的时候
this.bb=this.textBox1.text;

}
在你移出焦点的时候
private void textBox1_LostFocus(object sender, EventArgs e)
{
//当你移出焦的时候
if(bb.Equals(this.textBox1.text))
{
a=true;
}
}
最后在你关闭的时候判断a如果为true那么就有改变
你可以在每个数据控件的GotFocus和LostFocus事件中写以上代码;
也就是,只要你有一个改变了值a就会是true

------解决方案--------------------
二楼正解:
具体的流程就是:保存原始数据(设置一个逻辑标记符)-> > 提交数据(提交数据能原数据比较差异,并对逻辑标记符进行相应修改)-> > 判断逻辑标记符关闭窗口