以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  文本变化后按值进行筛选间隔时间的判断问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=75663)

--  作者:supwork
--  发布时间:2015/10/12 14:54:00
--  文本变化后按值进行筛选间隔时间的判断问题
If LastInputTickCount > 20 Then
Functions.Execute("通用查询窗口筛选",e,1)
End If

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

--  作者:大红袍
--  发布时间:2015/10/12 15:09:00
--  

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

 

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


--  作者:supwork
--  发布时间:2015/10/12 15:43:00
--  
按说应该有办法的,在要执行代码时,检查间隔时间,间隔时间太短的话就不执行代码了


--  作者:大红袍
--  发布时间:2015/10/12 15:44:00
--  
不知道你什么时候结束啊,间隔短但是最后一个字符了无法检测的啊。
--  作者:大红袍
--  发布时间:2015/10/12 15:49:00
--  

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

 

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


--  作者:supwork
--  发布时间:2015/10/12 17:39:00
--  
变换一下问题
如何得到最近两次按键的间隔时间

--  作者:大红袍
--  发布时间: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
--  发布时间: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编辑过]