以文本方式查看主题 - 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=141551) |
||||
-- 作者:lshshlxsh -- 发布时间:2019/10/4 9:17:00 -- beforeclose事件问题 请老师帮忙看一下 下面这段代码 写在模式窗口 beforeclose 事件 能弹出 请先保存数据后,再关闭 但是窗口 还是关闭了 感觉 e.Cancel =True 这句代码失灵了 这个问题有时候出现 有时候不出现 ,只要出现过一次 第二次还是会出现 进入编辑窗口 未做任何修改 再次打开 就不会关闭 在好多台电脑都出现这个问题 If DataTables("表A").HasChanges =True Or DataTables("表B").HasChanges =True Then If Tables("表B").Rows.Count =0 Then DataTables("表A").RejectChanges() DataTables("表B").RejectChanges() Else Dim Result As DialogResult Result= messagebox.Show("数据有变动,请保存!","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Warning) If Result=DialogResult.no Then DataTables("表A").RejectChanges() DataTables("表B").RejectChanges() ElseIf Result=DialogResult.yes Then MessageBox.Show("请先保存数据后,再关闭!") e.Cancel =True End If End If End If [此贴子已经被作者于2019/10/4 9:49:24编辑过]
|
||||
-- 作者:狐狸爸爸 -- 发布时间:2019/10/4 10:00:00 -- 按照你的代码逻辑,点击"否",撤销修改并关闭窗口,点击是,提示保存并禁止关闭窗口。 我测试也是如此,没有问题。 有问题的是你的逻辑,请先理清楚。
|
||||
-- 作者:lshshlxsh -- 发布时间:2019/10/4 10:04:00 -- 谢谢狐狸爸爸 我要实现的效果 点 是 弹出 不关闭窗口 现在的问题是 我点了是 有时候 不关闭 有时候 直接关闭窗口了 Dim Result As DialogResult Result= messagebox.Show("数据有变动,请保存!","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Warning) If Result=DialogResult.no Then DataTables("表A").RejectChanges() DataTables("表B").RejectChanges() ElseIf Result=DialogResult.yes Then MessageBox.Show("请先保存数据后,再关闭!") e.Cancel =True End If [此贴子已经被作者于2019/10/4 10:06:07编辑过]
|
||||
-- 作者:fangdejin -- 发布时间:2019/10/4 10:13:00 -- 代码写的不对啊,逻辑错了。 变动什么 第一句true 然后 else 有变动 自己打自己 |
||||
-- 作者:lshshlxsh -- 发布时间:2019/10/4 10:21:00 -- 谢谢 如果逻辑错 是不会弹出的 现在的问题是 弹出 还关闭窗口 |
||||
-- 作者:fangdejin -- 发布时间:2019/10/4 10:28:00 -- Dim n As Integer = Tables("客户联系人").Rows.Count If n> 0 Then If Tables("客户联系人").Current.DataRow.RowState <> DataRowState.Unchanged Then \'如果当前行已经修改过 Dim Result As DialogResult Result = MessageBox.Show("当前行数据已经修改是否保存", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) If Result = DialogResult.Yes Then Tables("客户联系人").Current.save MessageBox.Show("数据已经保存","提示") Else e.Cancel = True MessageBox.Show("没有修改原始数据!","提示") End If End If Else MessageBox.show("数据已经删除!") End If Tables("客户联系人").filter=""
|
||||
-- 作者:fangdejin -- 发布时间:2019/10/4 10:30:00 -- 给一个客户做的,这个更好用。 ![]() ![]() |
||||
-- 作者:狐狸爸爸 -- 发布时间:2019/10/4 10:30:00 -- 我之前测试了没有问题,点击否关闭窗口,点击是提示保存数据后拒绝关闭窗口,完全符合你的设计逻辑: |
||||
-- 作者:bobolan521 -- 发布时间:2019/10/4 12:02:00 -- 这个感觉像软件的BUG,代码逻辑是没有问题 的,因为大部分情况下都是可以正常执行的,莫名奇妙的会出现几次,而且一旦出现,所有的e.cancel= true 都会失灵,除非重启项目
|
||||
-- 作者:lshshlxsh -- 发布时间:2019/10/4 14:13:00 --
附件为操作视频 以下为beforeclose事件代码 If DataTables("出入库主表").HasChanges =True Or DataTables("出入库明细表").HasChanges =True Then If Tables(e.Form.Name & "_制单表").Rows.Count =0 Then DataTables("出入库主表").RejectChanges() DataTables("出入库明细表").RejectChanges() Else Dim Result As DialogResult Result= messagebox.Show("数据有变动,请保存!","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Warning) If Result=DialogResult.no Then DataTables("出入库主表").RejectChanges() DataTables("出入库明细表").RejectChanges() ElseIf Result=DialogResult.yes Then MessageBox.Show("请先保存数据后,再关闭!") e.Cancel =True End If End If End If [此贴子已经被作者于2019/10/4 14:26:09编辑过]
|