gpt4 book ai didi

c# - 延迟按键操作中的搜索功能

转载 作者:行者123 更新时间:2023-11-30 19:39:58 24 4
gpt4 key购买 nike

我正在尝试延迟对文本框的操作。我想在大量文本中搜索一个词。现在我用“textchanged”事件来做到这一点。这里的问题是,当他遇到一个超过 3 个字母的单词时(我已经阻止了 0-2 个单词搜索),这个过程变得很密集。

问题:我在这里的可能性是什么?

  • 例如:在 textchanged 事件上放置一个计时器?如果是这样,我该怎么做?

代码:

private void txtSearch_TextChanged(object sender, EventArgs e)
{
// delay here
dosearch(searchbox.text);
}

最佳答案

每次按下一个键时(重新)启动调度程序计时器,并在计时器结束时进行搜索。大约 200-300 毫秒的延迟通常是相当不错的。

private DispatcherTimer _searchTimer;

// Initialize timer in constructor with 200 ms delay and register tick event.

private void txtSearch_TextChanged(object sender, EventArgs e)
{
_searchTimer.Stop();
_searchTimer.Start();
}

private void OnSearchTimerTick(object sender, EventArgs e)
{
_searchTimer.Stop()
Search(searchBox.Text);
}

private void Search(string searchTxt)
{
// Do search
}

更新:为了提高响应能力(上面的示例将在搜索时锁定 UI,因为调度程序计时器回调在 UI 线程上运行),您可以在单独的任务中执行搜索。搜索完成后,您需要确保结果不会过时(用户在搜索时未修改搜索文本):

private void Search(string searchText)
{
Task.Run(() =>
{
// Execute search

Dispatcher.Invoke(() =>
{
if (searchText == searchBox.Text)
{
// Result is good
}
});
});
}

关于c# - 延迟按键操作中的搜索功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25485972/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com