我想设计一个C#程序,是操作数据库的。
我想实现这样一个目的:窗体上有添加、删除、修改、保存、撤销按钮。如果已经点击了添加、修改按钮,输入数据后,如果没有“保存”或者“撤销”,就不能再“添加”再“修改”了(这两个按钮的Enable为False)。
如果用户在绑定的编辑控件中对值进行了更改,则“添加”、“修改”无效而“保存”、“撤销”自动有效。通过控件的Changed事件似乎有问题,即记录移动时也会触发该事件。
我如何知道这几个按钮的状态呢,并适时刷新相关按钮的状态呢。

解决方案 »

  1.   

    在Changed事件中判断,过滤掉你说的“记录移动”的情况。
      

  2.   

    又看了两边有点明白了...你可以在点击添加的时候把 添加和修改的enable属性置为false
    然后再点击保存和撤销的时候再置为true
    这点我是这么理解的,是你先读入数据显示在编辑控件中,然后再进行修改,这样的话你可以考虑判断键盘按键...
    我想了一个比较复杂的方法,就是在读取数据的时候把数据保存到字段里,然后判断按键,当有按键按下时(你可以过滤掉一些不会造成数据修改的按键)然后循环比对字段里的值跟当前编辑控件中的值是否一致,如果不一致就置 “保存”,“撤销”的enable属性为true,一致就让它保持false
      

  3.   

    谢谢你们的关心及回复。按楼上说的是可行的,我也打算在万不得已的情况下采取这样做。我说的Changed事件,比如对于Combobox来说,通过鼠标也会引发。我对每个控件都要处理其事件,这样太麻烦(如果都是大数据,还浪费资源)。
    应该有一个办法,可以在我需要的时候得到表的状态(有记录添加、修改,则未保存或未撤销前不能再添加和修改),从而实现这样的目的。