我正在尝试使用带有以下代码的c#在WPF中使用gridview.keydown事件来实现一个功能
string searchText = e.Key.ToString();
PropertyInfo[] properties = typeof(MarketWatchOM).GetProperties();
foreach (PropertyInfo property in properties)
{
if (!string.IsNullOrEmpty(SearchPreferanceMarketWatch) && property.Name.ToUpper().Equals(SearchPreferanceMarketWatch.ToUpper()))
{
var item = this.MktWatchGrid.Items.Cast<MarketWatchOM>().Any(selectedRow =>
selectedRow.CustomSymbol.StartsWith(searchText, StringComparison.OrdinalIgnoreCase));
if (item == null)
return;
this.MktWatchGrid.CurrentItem = item;
this.MktWatchGrid.ScrollIntoView(item);
break;
}
}
在这里,我能够捕捉到的是一次击键。你能否建议任何方法来获取一个完整的单词&#39;然后该方法将在列中搜索该完整的单词。
如何更改我的代码以获得所需的单词?
答案 0 :(得分:0)
您必须将每次按键保存到某处的某个字段,直到找到指示该字词结尾的内容。在您的方法之外,有一个私有字段:
private string _searchText = "";
然后将代码的第一行更改为:
_searchText += e.Key.ToString();
最后,将对searchText
的所有引用更改为_searchText
。
这将跟踪所有按键。
您可能还需要包含一个计时器,并且在没有打字2-3秒后,“忘记”&#39;用户已输入的内容。这类似于文件/列表搜索在其他应用程序中的工作方式。
答案 1 :(得分:0)
除了皮特的回答,这里还有一些关于使用计时器的说明:
使用DispatcherTimer。创建一个计时器的单个实例,将间隔设置为3秒并订阅它的TickEvent。每按一次键启动/重启计时器。在TickEvent处理程序中停止计时器并清除searchtextstring。 DispatcherTimer教程wpf-tutorial.com/misc/dispatchertimer