以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]是代码问题还是狐表的BUG?请贺总指点。 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=18035) |
||||
-- 作者:kitty -- 发布时间:2012/3/31 7:40:00 -- [求助]是代码问题还是狐表的BUG?请贺总指点。 问题描述:附上实验项目附件,本项目没有实际意义,只是为了测试问题。简化的一个项目。 表A中有一个窗口“信息”。 我的设计要求是:表A的姓名列不能为空,为此我设计了如下代码: 在窗口的beforclose事件中,代码如下: 以下内容为程序代码:
1 If e.closemode = 0 Then 2 Dim dt As DataTable = DataTables("A") 3 If dt.HasChanges = True Then 4 If MessageBox.Show("已修改记录,是否保存?", "提示", MessageBoxButtons.YesNo) = DialogResult.Yes Then 5 For Each r As Row In Tables("A").Rows 6 If r("姓名") = "" Then 7 MessageBox.Show("姓名不能为空,请重新填写!") 8 e.Cancel = True 9 Return 10 End If 11 Next 12 DataTables("A").Save() 13 MessageBox.Show("信息已保存!") 14 Else 15 DataTables("A").RejectChanges() 16 End If 17 End If 18 End If 19 设计思想是:如果是通过窗口上的X来关闭窗口的话,判断当前的表是不是被修改过了,如果没有修改则直接关闭。如果修改了,就询问用户是不是需要保存,如果不需要保存,则直接关闭,如果需要保存,就检查表中的姓名列有没有为空的,如果为空,则提示重新填写,同时禁止关闭窗口。 问题就出在红色部分。我模拟红色部分,同样的代码会出现两种情况: 第一种:打开我的附件,运行表中的窗口,在窗口中的表中右键添加一行,姓名留空不写,紧接着点窗口的X号,此时会提示("姓名不能为空,请重新填写!") ,按代码和我的要求,接着窗口不应该关闭的,然而此时却关闭了! 第二种:出现以上情况后,接着,点“窗口管理”中的设计,打开“窗口设计器”,此时找到Beforclose事件处,点开代码,打开“代码编辑器”窗口,记住不要对代码做任何修改,此时再关闭。然后再次运行“信息”窗口,这时再点窗口的X号,这时你会发现,窗口不会关闭的,而这样的才是正确的流程。 不要以为这样就好了,关闭项目,重复第一种的流程,这时你发现,窗口又被关闭了。!!! 怕狐爸不明白我说的是什么,写的有点多,希望能耐心看下去,还烦请狐爸告知是代码的问题,还是狐表的BUG??
还是怕我说的不明白,我又做了个动画,操作步骤就是上面我说的步骤。 [此贴子已经被作者于2012-3-31 9:01:59编辑过]
|
||||
-- 作者:blackzhu -- 发布时间:2012/3/31 8:47:00 -- 窗口关闭是有一点问题的,不管是用取消还是返回?我也曾经碰到你一样的问题的.规律没有找到. |
||||
-- 作者:kitty -- 发布时间:2012/3/31 9:00:00 -- 谢谢老朱关注!请教下,有没有解决的办法啊,在不把X关掉的情况下。项目快完工了,碰到这个问题,真是上火啊。狐爸也帮着看看啊。到底是什么原因啊。真是急啊。 |
||||
-- 作者:狐狸爸爸 -- 发布时间:2012/3/31 9:04:00 -- 就暂时先去掉这个X吧。 |
||||
-- 作者:kitty -- 发布时间:2012/3/31 9:27:00 -- 那狐爸快点更新下吧,项目等着交出去呢。要是单纯的把X关掉,总觉得不是很完美啊。 |
||||
-- 作者:狐狸爸爸 -- 发布时间:2012/3/31 9:31:00 -- 哈哈,我会留意这个问题的。 不过也别太追求完美,实用就行,说实话,foxtable和我想象中的foxtable差距甚大,理想总是要向现实妥协的。 |
||||
-- 作者:blackzhu -- 发布时间:2012/3/31 10:30:00 -- 老大,顶帖,奇怪的很.
写好代码,运行好好的,把窗口设置为自动打开,也好好的,不设置自动打开,重启项目,就不起作用了. |
||||
-- 作者:狐狸爸爸 -- 发布时间:2012/3/31 11:05:00 -- 以下是引用blackzhu在2012-3-31 10:30:00的发言:
老大,顶帖,奇怪的很.
写好代码,运行好好的,把窗口设置为自动打开,也好好的,不设置自动打开,重启项目,就不起作用了.
什么意思? 没有看懂。 |
||||
-- 作者:hanxuntx -- 发布时间:2012/3/31 14:41:00 -- 狐爸,你想象中的foxtable是什么样的 |
||||
-- 作者:布莱克朱 -- 发布时间:2012/3/31 20:05:00 -- 以下是引用狐狸爸爸在2012-3-31 11:05:00的发言:
什么意思? 没有看懂。 呵呵,是测试kitty的结果. |