Foxtable(狐表)用户栏目专家坐堂 → 文本变化后按值进行筛选间隔时间的判断问题


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

主题:文本变化后按值进行筛选间隔时间的判断问题

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


加好友 发短信
等级:三尾狐 帖子:688 积分:4903 威望:0 精华:0 注册:2013/10/27 17:14:00
文本变化后按值进行筛选间隔时间的判断问题  发帖心情 Post By:2015/10/12 14:54:00 [只看该作者]

If LastInputTickCount > 20 Then
Functions.Execute("通用查询窗口筛选",e,1)
End If

文本值变化就执行筛选功能.如果录入10个字符则这段 筛选代码被执行10次,如果录入速度相当快,或者是一次性粘贴进去,则系统也执行10次代码
实际上只需执行一次就行
我想实现的效果是,判断文本变化后的间隔时间,如果太短则不执行代码(如间隔时间在20以内)
按以上代码写怎么不行
这个值改成200也不行,原因何在,或者代码要如何写

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


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

 这个是没办法处理的,你不知道什么时候输入结束。

 

 检查回车查询,或者用按钮查询


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


加好友 发短信
等级:三尾狐 帖子:688 积分:4903 威望:0 精华:0 注册:2013/10/27 17:14:00
  发帖心情 Post By:2015/10/12 15:43:00 [只看该作者]

按说应该有办法的,在要执行代码时,检查间隔时间,间隔时间太短的话就不执行代码了


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


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

不知道你什么时候结束啊,间隔短但是最后一个字符了无法检测的啊。

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


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

或者你换一种思路。每次进入事件,开启一下计时器,一秒后执行筛选代码。

 

再次进入的时候,关闭计时器,最后在开启一秒后执行。


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


加好友 发短信
等级:三尾狐 帖子:688 积分:4903 威望:0 精华:0 注册:2013/10/27 17:14:00
  发帖心情 Post By:2015/10/12 17:39:00 [只看该作者]

变换一下问题
如何得到最近两次按键的间隔时间

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


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

static ptime As Date = Nothing

Dim sp As TimeSpan = Date.now - ptime
If sp.TotalSeconds <= 1 Then
    return '一秒内多次触发无效
Else
    ptime = Date.now
End If


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


加好友 发短信
等级:三尾狐 帖子:688 积分:4903 威望:0 精华:0 注册:2013/10/27 17:14:00
  发帖心情 Post By:2015/10/13 9:26:00 [只看该作者]

1秒内限制触发无效思路不错,但第一个字符录入后必定执行一次. 实际上可以做到如果第一字符与第二字符间隔时间短也不执行

图片点击可在新窗口打开查看此主题相关图片如下:ytyty.png
图片点击可在新窗口打开查看
具体代码 为

static ptime As Date
static sp As TimeSpan = Nothing
Dim tb As Table = e.Form.Controls("Table1").Table
If ptime = Nothing Then
    ptime = Date.now
Else
    sp = Date.now - ptime
    ptime = Date.now
    Dim r As Row = tb.AddNew
    r("分类")=e.Sender.text
    r("名称")= sp.TotalSeconds
End If

[此贴子已经被作者于2015/10/13 9:26:21编辑过]

 回到顶部