我正在使用C#开发一个简单的应用程序(电话簿),我的项目中有一个填充了联系人的listview。我一直在尝试实现通过文本框自动(即时)搜索listview的可能性,我已经成功了,但不是预期的方式。如果给你一个例子,你会意识到实际的问题。假设我有一个名为Bill Gates的联系人,当我尝试搜索它时,它被找到了,这部分是没问题的。但是,当我尝试搜索另一个联系人时,问题就来了。在这种情况下,我必须在输入另一个名字之前清除文本框,但只能逐个字母地删除。当我开始删除整个名称时,在删除第一个字母后,它会像我刚刚输入名称一样选择该项(并且还聚焦)- 实际上,在它再次找到联系人之前没有时间删除整个名称。我必须先删除第一个字母,然后切换回文本框,再删除另一个字母,以此类推。是否有任何解决方案可以使搜索自动进行 - 就像现在的情况一样,但另一方面,清除(清除文本框)而不选择联系人是可能的。
看看代码:
看看代码:
private void txt_Search_TextChanged(object sender, System.EventArgs e)
{
if (txt_Search.Text != "")
{
foreach (ListViewItem item in listView1.Items)
{
if (item.Text.ToLower().Contains(txt_Search.Text.ToLower()))
{
item.Selected = true;
}
else
{
listView1.Items.Remove(item);
}
}
if (listView1.SelectedItems.Count == 1)
{
listView1.Focus();
}
}
else
{
LoadContacts();
RefreshAll();
}
}