如何从TextBox加速C#窗体全文搜索
本文关键字:文搜索 搜索 窗体 TextBox 加速 | 更新日期: 2023-09-27 18:25:33
我需要在C#Windows窗体应用程序中实现类似于TextBox
字段的TextChanged
功能。在我的案例中,TextChanged
事件基于TextBox.Text
收集数据,并将其显示在树中。在我的情况下,由于收集和显示太多数据很耗时,我遇到了GUI中不必要的重绘导致的响应缓慢。这当然是TextChanged
事件的设计,因为它缓冲了以后的按键并为每个字母运行TextChanged
。我需要实现跳过所有缓冲的TextChanged
事件,只执行最后一个。事实上,当我打字时,我需要更改这个
l, lo, lon, long, longn, longna, longnam, longname
到此:
l, longname
如果您只想放慢速度,请在计时器tick处理程序中进行处理,但从禁用计时器开始。在更改文本时,先禁用计时器,然后再启用它。确保计时器是一次性计时器(不重复)。这意味着处理将在文本更改后的计时器间隔内进行,并且新的文本更改将取消之前设置的任何更改。这就是你想要的。当用户键入时,处理将一次又一次地延迟,直到用户暂停键入为止。
使用System.Windows.Forms.Timer
定期检查对TextBox的更改。
很惊讶它这么简单。。。
private void comboBox1_TextChanged(object sender, EventArgs e)
{
timer1.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{
doSearch();
timer1.Stop();
}