首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

怎么实现 窗体内容改变,如果未保存,关闭时提示保存

2012-01-23 
如何实现 窗体内容改变,如果未保存,关闭时提示保存?窗体内有六十多个TextBox现在想到的方法是定义一个全局

如何实现 窗体内容改变,如果未保存,关闭时提示保存?
窗体内有六十多个TextBox   现在想到的方法是定义一个全局变量hasChange   =   false如果有改动则变为true   提交了则变为false   在Closeing事件判断hasChange的值并进行相应的操作  
现在我想问一下如何判断有改动?能想到的就是就是在每个textbox的TextChange事件里把hasChange   给变为true   有没有其他的方法?

[解决办法]
如果要求不是很高的话,可以用TextBox的Modified属性来判断,
如果要求很高的话,那么你要在把数据加载到每个TextBox后做一个用来比较的副本,当程序关闭的时候把每一个文本框的内容和原来的副本比较,如果有一个不同也是有了改动,则保存.
[解决办法]
其实你那个方法就是不错的方法,有时候不要太懒以为有什么好方法。

你可以把所有控件的TextChange都指向同一个事件处理程序,这样编程量就可以小一些。
[解决办法]
如果要求不是很高的话,可以用TextBox的Modified属性来判断,
如果要求很高的话,那么你要在把数据加载到每个TextBox后做一个用来比较的副本,当程序关闭的时候把每一个文本框的内容和原来的副本比较,如果有一个不同也是有了改动,则保存.
--------------------

此方法是正解。如果是对某个Textbox的内容删除了,之后又填写了,但与之前的内容一样,没有发生变化的话,用textbox的TextChange事件处理,就会认为是内容修改了,但实际上没有修改。

主要看LZ的程序的要求了,如果认为只要变化了(不论与原来内容是否相同)就提示,那就无所谓哪种方法了。
[解决办法]
不可以用textbox.databindings吗

然后用DataAdapter.Update里的DataViewRowState.ModifiedCurrent判断
[解决办法]
方法1是绑定数据,好解决
方法2是save前写个循环判断一下每个textbox的值是不是等于初始的class的各字段的值
方法3是TextChanged事件

能想到的就这么多了

[解决办法]
要求没那么高的话就用TextChange吧,
反正这些textbox共用一个事件方法,也就几行代码.
[解决办法]
“对某个Textbox的内容删除了,之后又填写了,但与之前的内容一样,没有发生变化的话,用textbox的TextChange事件处理,就会认为是内容修改了,但实际上没有修改。”
这个问题可以通过把初始值保存到Control.Tag属性中,在TextChanged属性发生时,比较新值和Tag属性的值,当然,如果有需要可以更新Control.Tag属性值。

热点排行