Foxtable(狐表)用户栏目专家坐堂 → DataColChanging触发两次的问题


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

主题:DataColChanging触发两次的问题

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/5/20 14:47:00 [只看该作者]

应该和什么版本的系统无关的. 重新安装.NET试试看

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


加好友 发短信
等级:二尾狐 帖子:516 积分:4506 威望:0 精华:0 注册:2012/7/4 16:22:00
  发帖心情 Post By:2015/5/20 14:50:00 [只看该作者]

大家下载测试一下窗口,运行窗口后,输入CELL0002,看是弹出一次还是两次提示。同样的代码我就是出现两次提示,这个到底跟什么有关。

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/20 14:52:00 [只看该作者]

以下是引用jswalley在2015/5/20 14:50:00的发言:
大家下载测试一下窗口,运行窗口后,输入CELL0002,看是弹出一次还是两次提示。同样的代码我就是出现两次提示,这个到底跟什么有关。

 

如果你用快键 Tab 或 Enter,就会提示两次;

 

如果用鼠标选择,就一次


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


加好友 发短信
等级:二尾狐 帖子:516 积分:4506 威望:0 精华:0 注册:2012/7/4 16:22:00
  发帖心情 Post By:2015/5/20 14:54:00 [只看该作者]

确实,用鼠标是一次,用TAB就是两次。Bin老师你试一下。 

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/5/20 14:56:00 [只看该作者]

确实是这样,好像也没什么好的办法.你写到Validating事件去验证吧  要不就禁用TAB健

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


加好友 发短信
等级:二尾狐 帖子:516 积分:4506 威望:0 精华:0 注册:2012/7/4 16:22:00
  发帖心情 Post By:2015/5/20 15:06:00 [只看该作者]

我如果在控件的Validating事件中判断就有一个问题,对于新增的行,我工号是根据自动增长计算的,预先填好的。但用户可以修改,这时候如果用户修改之后如果提示重复,就修改成最新的那个编号,系统也会提示了。

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/5/20 15:08:00 [只看该作者]

SystemReady = False
If e.DataCol.Name = "工号" Then

    MessageBox.Show( "e.OldValue: " & e.OldValue)
    MessageBox.Show( "e.NewValue: " & e.NewValue)

    Dim dr As DataRow 
    dr = e.DataTable.Find("工号 = '" & e.NewValue & "'")
    If dr IsNot Nothing   Then
        MessageBox.Show("此工号已经存在!","系统测试",MessageBoxButtons.OK,MessageBoxIcon.Warning)
        e.Cancel = True
    End If
End If
SystemReady = True

这样,测试没问题了.

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


加好友 发短信
等级:二尾狐 帖子:516 积分:4506 威望:0 精华:0 注册:2012/7/4 16:22:00
DataColChanging触发两次的问题  发帖心情 Post By:2015/5/20 15:16:00 [只看该作者]

这样测试是不会弹出两次提示,但有个问题,之前文本框中输入的值如果重复,会恢复到之前的输入,也就是e.Cancel = True会起作用,但这样修改之后,光标离开
工号的文本框之后,用户输入保留了下来。 尽管提示工号重复。  

要不就 增加一句 e.NewVaule = e.OldValue
[此贴子已经被作者于2015/5/20 15:18:48编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/5/20 15:20:00 [只看该作者]

MessageBox.Show("此工号已经存在!","系统测试",MessageBoxButtons.OK,MessageBoxIcon.Warning)
e.Cancel = True
 
改成
 
e.NewValue = e.OldValue
 

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/5/20 15:23:00 [只看该作者]

用DataColChanged事件吧

If e.DataCol.Name = "工号" Then

    Dim dr As DataRow 
    dr = e.DataTable.Find("工号 = '" & e.NewValue & "'")
    If dr IsNot Nothing   Then
        MessageBox.Show("此工号已经存在!","系统测试",MessageBoxButtons.OK,MessageBoxIcon.Warning)
        SystemReady =False
        e.DataRow("工号")=e.oldValue
        SystemReady =True
    End If
End If

 回到顶部
总数 21 上一页 1 2 3 下一页