以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  窗口的BeforeClose事件代码问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=17950)

--  作者:红叶
--  发布时间:2012/3/29 15:35:00
--  窗口的BeforeClose事件代码问题

模式窗口的BeforeClose事件

If Tables("销售商").Current IsNot Nothing Then
    If Tables("销售商").Current.DataRow.RowState = DataRowState.Added  Or Tables("销售商").Current.DataRow.RowState <> DataRowState.Unchanged Then \'如果是新增行或当前行已经修改过
       MessageBox.show("当前记录尚未确认,不能关闭!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
       e.Cancel = True

     End If
End If

当 销售商 当前行是新增或修改过,窗口关闭前是能MessageBox.show提示,但是e.Cancel = True禁止关闭没起作用,还是关闭了?

除非再打开窗口设计后,再次运用,此代码才有效e.Cancel = True能禁止关闭

 

[此贴子已经被作者于2012-3-29 15:37:46编辑过]

--  作者:红叶
--  发布时间:2012/3/29 15:46:00
--  

参照 传统编辑方式 的实例

设计步骤:

1、设计好上图所示的窗口,窗口类型为模式窗口,这样在用户关闭此窗口之前不能进行任何操作。

2、将窗口的BeforeClose事件代码设置为:

If Tables("员工").Current.DataRow.RowState <> DataRowState.Unchanged Then \'如果当前行已经修改过
    e.Cancel =
True
End
If

上面的代码在关闭窗口前执行,如果用户已经修改当前记录(行),但未保存,将禁止关闭窗口,直到保存或撤销修改。

设计完保存退出项目,然后再重新打开项目后,也同样存在这样的问题:

e.Cancel = True禁止关闭没起作用,还是关闭了,

除非再打开窗口设计后,再次运用,此代码才有效e.Cancel = True能禁止关闭


--  作者:狐狸爸爸
--  发布时间:2012/3/29 16:18:00
--  

你打开CaseStudy目录下的文件:传统编辑方式.Table

看看是不是也这样,如果不是,看看这个文件和你的设计有什么不同。


--  作者:姗姗
--  发布时间:2012/10/27 17:08:00
--  
你解决了么?我也是遇到同样的情况,怎么研究都得不出答案,就是关闭窗口前能弹窗提示,但是按确定后,窗口并未保存还是关闭了。而且关闭后数据还是有保存。
--  作者:lin_hailun
--  发布时间:2012/10/29 13:16:00
--  
以下是引用姗姗在2012-10-27 17:08:00的发言:
你解决了么?我也是遇到同样的情况,怎么研究都得不出答案,就是关闭窗口前能弹窗提示,但是按确定后,窗口并未保存还是关闭了。而且关闭后数据还是有保存。

应该不存在这样的问题,我测试e.Cancel = True这句代码有效。