如何从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

如何从TextBox加速C#窗体全文搜索

如果您只想放慢速度,请在计时器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();
}