以文本方式查看主题

-  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??

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目5.rar

还是怕我说的不明白,我又做了个动画,操作步骤就是上面我说的步骤。

图片点击可在新窗口打开查看此主题相关图片如下:1.gif
图片点击可在新窗口打开查看

[此贴子已经被作者于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的结果.