.NET – 文本框控件 – 等待用户完成输入

所有问候,

是否有内置的方式知道用户何时完成输入到文本框? (在打标签之前,或移动鼠标)我有一个数据库查询发生在textchanged事件上,一切正常。但是,我注意到有一点滞后,因为如果用户正在快速输入文本框,程序正在忙于为每个字符进行查询。所以我希望的是一种看看用户是否完成打字的方式。所以如果他们键入“a”,然后停止事件触发。但是,如果他们键入“一路”,则事件在y键控之后触发。

我有一些想法浮在我的头上,但我确定他们不是最有效率。像测量自上一个textchange事件以来的时间,如果它是>比一定价值,那么它会继续运行我的其余程序。

让我知道你的想法。

语言:VB.NET
框架:.Net 2.0

– 编辑澄清“完成打字”

一种方法

>创建一个间隔为X毫秒的计时器

间隔时间约为300ms;超过按键之间的正常时间,以及在完成和更新发生之间等待的合理时间
>在输入的TextChanged事件中,Stop()然后Start()定时器

这将重新启动计时器,如果它已经运行,所以如果用户按正常速率输入,每次更改将重新启动计时器。
>在定时器的Tick事件中,Stop()Timer并执行长事务
>可选:处理Leave和KeyDown事件,以便离开控件或按Enter将停止()Timer并执行长事务。

如果文本已更改,并且用户未在X毫秒内进行任何更改,则会导致更新。

您所考虑的“测量自上次更新以来的时间”方法一个问题是,如果最后一次更改快速进行,则更新不会发生,并且不会有任何后续更改来触发另一个检查。

注意:TextBox和Timers之间必须有一对一的配对;如果您打算通过多个输入进行此操作,我将考虑构建一个用于包装此功能的UserControl。

相关文章

Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强...
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办...
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace...
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用...
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选...
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As Dat...