如何判断form控件值是否改变

jweet 2008-03-21 10:42:47
我现在有些Form上面有很多子控件,当用户点击关闭的时候,我想判断用户是否修改了子控件的值,如果修改了就提示保存,没有就直接关闭,我现在就是想知道有没有什么好的方法可以判断子控件(任何C#的标准控件)的值修改没有,除了为每个控件添加修改事件,然后用bool记录是否修改,还有就是保存初始化的值等。还有没有什么的好方法,。谢谢各位大哥多提提意见。
...全文
386 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2011-10-22
  • 打赏
  • 举报
回复
同求............
ponydph 2011-06-01
  • 打赏
  • 举报
回复
越到同样的问题
jweet 2008-03-21
  • 打赏
  • 举报
回复
试了,好像不得行哦 。。UP
dancingbit 2008-03-21
  • 打赏
  • 举报
回复
Capture之后,理论上Form也可以获得鼠标消息的,不一定是对自身的操作,这就是“捕获”的含义。
HimeTale 2008-03-21
  • 打赏
  • 举报
回复
把原来的值放到tag里...
关闭的时候逐一比较吧
jweet 2008-03-21
  • 打赏
  • 举报
回复
不知道,我想应该不得行吧,鼠标的操作是给控件相关联的,如果窗体要获取鼠标的操作,就必须要鼠标的操作在Form上 !!
dancingbit 2008-03-21
  • 打赏
  • 举报
回复
RadioButton和CheckBox肯定麻烦,不过窗体还有一个Capture属性,捕获鼠标,不过这个我没有验证过,看看能不能捕获鼠标消息
jweet 2008-03-21
  • 打赏
  • 举报
回复
UP,假如FORM的子控件都是输入类控件的话可以通过获取窗体的KeyPrieview事件来判断,但是问题在于FORM上有选择性质的控件,所有不好判断啊 !!!!
dancingbit 2008-03-21
  • 打赏
  • 举报
回复
当然,你也可以让窗体KeyPrieview,然后判断当前哪个子控件有焦点,对应的按键可能会对该控件产生什么作用...
真的很复杂,不过好处是不用理会控件的变化

如果绑定到了DataTable,可以在DataTable的RowChanged或ColumnChanged事件中判断
或者通过DataTable的GetChanged获取有无更改
jweet 2008-03-21
  • 打赏
  • 举报
回复
UP ,就没有其他更好的方法了吗 ??那些方法都不怎么好啊 !!!
dancingbit 2008-03-21
  • 打赏
  • 举报
回复
恐怕要用你自己说的方法...
jweet 2008-03-21
  • 打赏
  • 举报
回复
只两个按钮,但是在关闭的时候,我想:假如用户修改了FORM中任何子控件的值就提示是否保存,如果没有修改就直接关闭。。。UP !!!!
奔跑的蜗牛007 2008-03-21
  • 打赏
  • 举报
回复
这样做太复杂,在页面放二个按钮,一个保存,一个关闭,只有点击保存才更新数据,点击关闭只关闭窗口,不做数据更新,这样,把选择权交给用户
dancingbit 2008-03-21
  • 打赏
  • 举报
回复
不能获得子控件的鼠标消息?
看实例学VFP:复选框控件 时间:2009-03-24来源:编程入门网 作者:老马   在vfp基础教程-复选框一文中,已经给出了复选框控件的常用属性。这个控件的使用重点是对它的value属性判断上,另外也可以通过controlsource属性把它和表中的某个逻辑型字段绑定,同时也可以在它支持的click、interactiveChange等事件中进行编程。   本文是一个在复选框控件的interactiveChange事件中编程的小例子,运行时通过复选框的选择来控制label控件的文字大小及颜色变化,运行界面如下:   制作步骤:   一、新建表单,将其caption属性设置为“编程入门网-复选框控件”,保存为“复选框控件.scx”。   二、向表单上添加一个label控件,caption属性设为“编程入门网”,fontsize属性设为10,AutoSize属性设为.t.,Forecolor属性设为“0,0,255”(rgb颜色)   三、向表单添加两个复选框控件,caption属性依次设置为“增大字号”和“改变颜色”,其它属性采用默认的。   四、添加事件代码:   1.复选框check1(“增大字号”)的interactiveChange事件: if this.value=1 thisform.label1.fontsize=18 else thisform.label1.fontsize=10 endif   2.复选框check2(“改变颜色”)的interactiveChange事件: if this.value=1 thisform.label1.forecolor=rgb(255,0,0) else thisform.label1.forecolor=rgb(0,0,255) endif

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧