我有一个ListView
项目,我想制作一个过滤器,它只显示包含TextBox
中写的单词的项目。我试过了:
bool containsAnyLetter = textBox2.Text.IndexOfAny(letters) >= 0;
填写ListView
的代码:
private void button1_Click_1(object sender, EventArgs e)
{
listView1.Items.Clear();
listView2.Items.Clear();
int places, count;
string keyword, site;
count = 1;
keyword = keywords.Text;
site = sites.Text;
places = Convert.ToInt32(textBox1.Text);
var client = new GwebSearchClient("http://www.google.com");
var results = client.Search(keyword, places);
foreach (var webResult in results)
{
ListViewItem item = listView1.Items.Add(count++ + " " + webResult.ToString());
item.SubItems.Add(string.Empty);
ListViewItem itemz = listView2.Items.Add(webResult.Url.ToString());
listView1.FullRowSelect = true;
}
}
现在我想做类似的事情,但它必须将当前的listview项目交换为仅包含TextBox
中的单词的项目。
if (listView2.Items.ToString().Contains(textBox2.Text))
{
//the should exchange the listview items for a that one's which contains a word from a textbox.
}
但它似乎并没有奏效。有没有其他方法可以找到并显示TextBox
中包含单词的项目?
答案 0 :(得分:3)
另一种方法是将ListView项目转换为IEnumerable并使用Linq进行查询。
IEnumerable<ListViewItem> lv = listViewItems.Items.Cast<ListViewItem>();
var matchingItems = lv.Where(i => i.Text.Contains(textBoxCriteria.Text));
答案 1 :(得分:1)
您可以遍历Listbox
并检查该项是否包含该字词,但您无法隐藏该项目,因为ListBox无法执行此操作。你必须选择:
1.隐藏实际的ListBox并在同一位置创建一个新的OR
2.使用WPF
使用此代码检查项目是否包含文本框中的文本:
foreach (var listBoxItem in listBox1.Items)
{
if(listBoxItem.ToString().Contains(txtBox.Text))
{
//Item contains word, do something
}
}