Foxtable(狐表)用户栏目专家坐堂 → [推荐]切换主窗口前,如果数据没有保存,如何停止切换?


  共有2001人关注过本帖树形打印复制链接

主题:[推荐]切换主窗口前,如果数据没有保存,如何停止切换?

帅哥哟,离线,有人找我吗?
ezgame
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:17 积分:183 威望:0 精华:0 注册:2016/10/16 11:02:00
[推荐]切换主窗口前,如果数据没有保存,如何停止切换?  发帖心情 Post By:2016/10/25 22:34:00 [只看该作者]

有两个类型为“主窗口”的窗口(窗口1、窗口2),分别通过两个按钮来打开(按钮1、按钮2,通过执行Forms("窗口").open 来打开)。

在窗口1 的 BeforeClose事件中写了如果数据修改过,不能关闭:

If CurrentTable.Current.DataRow.RowState <> DataRowState.Unchanged Then 

    e.Cancel = True
End If

但是现在窗口1打开,并且修改数据没保存的情况下,点击“按钮2”,依然能打开窗口2,发现上面代码中 e.Cancel = True 并没有生效。

 

请问应该如何实现我想要的效果,就是在一个主窗口数据没有保存的情况下,不能打开另一个主窗口。


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110597 积分:562881 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/10/25 22:42:00 [只看该作者]

打开窗口2的时候窗口1并没有关闭,自然不会触发事件,就算触发e.Cancel = True也只是阻止窗口1 关闭,并不能阻止窗口2 打开

按钮2事件

If CurrentTable.Current.DataRow.RowState <> DataRowState.Unchanged Then 

    return
End If

Forms("窗口2").open


 回到顶部
帅哥哟,离线,有人找我吗?
ezgame
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:17 积分:183 威望:0 精华:0 注册:2016/10/16 11:02:00
  发帖心情 Post By:2016/10/25 23:06:00 [只看该作者]

以下是引用有点蓝在2016/10/25 22:42:00的发言:
打开窗口2的时候窗口1并没有关闭,自然不会触发事件,就算触发e.Cancel = True也只是阻止窗口1 关闭,并不能阻止窗口2 打开

按钮2事件

If CurrentTable.Current.DataRow.RowState <> DataRowState.Unchanged Then 

    return
End If

Forms("窗口2").open

我在 e.Cancel = True 前面加了 MessageBox() 代码来测试过的,点击按钮2 来打开窗口2的时候,是能弹出消息框的,说明此时是触发了关闭窗口1这个动作的,因此才会执行 BeforeClose 事件中的代码。

 

另外我看了帮助文档中 窗口类型这个章节,其中有这么一句:

每个表只能打开一个主窗口,打开一个新的主窗口,之前的主窗口会自动关闭。”

 

窗口1应该是关闭了的,看来这种情况下 e.Cancel = True 没有生效。

 

我先试试加上你给的代码,谢了先


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110597 积分:562881 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/10/25 23:21:00 [只看该作者]

每个表只能打开一个主窗口  -- 问题是你的2个窗口是属于同一个表还是2个表

 回到顶部
帅哥哟,离线,有人找我吗?
ezgame
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:17 积分:183 威望:0 精华:0 注册:2016/10/16 11:02:00
  发帖心情 Post By:2016/10/25 23:26:00 [只看该作者]

以下是引用有点蓝在2016/10/25 23:21:00的发言:
每个表只能打开一个主窗口  -- 问题是你的2个窗口是属于同一个表还是2个表

是属于同一个表的


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110597 积分:562881 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/10/26 8:45:00 [只看该作者]

测试了一下,确实不起作用。还是按照2楼的方式处理吧

 回到顶部