微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

.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。

原文地址:https://www.jb51.cc/vb/256012.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐