所有问候,
是否有内置的方式知道用户何时完成输入到文本框? (在打标签之前,或移动鼠标)我有一个数据库查询发生在textchanged事件上,一切正常。但是,我注意到有一点滞后,因为如果用户正在快速输入文本框,程序正在忙于为每个字符进行查询。所以我希望的是一种看看用户是否完成打字的方式。所以如果他们键入“a”,然后停止事件触发。但是,如果他们键入“一路”,则事件在y键控之后触发。
我有一些想法浮在我的头上,但我确定他们不是最有效率。像测量自上一个textchange事件以来的时间,如果它是>比一定价值,那么它会继续运行我的其余程序。
让我知道你的想法。
语言:VB.NET
框架:.Net 2.0
– 编辑澄清“完成打字”
一种方法:
原文链接:https://www.f2er.com/vb/256012.html>创建一个间隔为X毫秒的计时器
间隔时间约为300ms;超过按键之间的正常时间,以及在完成和更新发生之间等待的合理时间
>在输入的TextChanged事件中,Stop()然后Start()定时器
这将重新启动计时器,如果它已经运行,所以如果用户按正常速率输入,每次更改将重新启动计时器。
>在定时器的Tick事件中,Stop()Timer并执行长事务
>可选:处理Leave和KeyDown事件,以便离开控件或按Enter将停止()Timer并执行长事务。
如果文本已更改,并且用户未在X毫秒内进行任何更改,则会导致更新。
您所考虑的“测量自上次更新以来的时间”方法的一个问题是,如果最后一次更改快速进行,则更新不会发生,并且不会有任何后续更改来触发另一个检查。
注意:TextBox和Timers之间必须有一对一的配对;如果您打算通过多个输入进行此操作,我将考虑构建一个用于包装此功能的UserControl。