【问题标题】:Filtering a words in a listview items by a textbox通过文本框过滤列表视图项中的单词
【发布时间】:2014-05-18 12:08:48
【问题描述】:

我有一个带有项目的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;
    }
}

现在我想做类似的事情,但它必须将当前的列表视图项目交换为仅包含 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 中包含单词的项目?

【问题讨论】:

  • 这只是一个例子,我不知道应该使用什么代码在列表视图中查找项目。
  • 嗯,不,这不是 listView。我正在使用 google api 在列表视图中填写 url。
  • 我的声望不够,抱歉。但是看那里:wklej.org/hash/f10097c59c9
  • 哦,是的。对不起,我是这里的新手。

标签: c# listview filter


【解决方案1】:

另一种方法是将 ListView 项转换为 IEnumerable 并使用 Linq 进行查询。

IEnumerable<ListViewItem> lv = listViewItems.Items.Cast<ListViewItem>();

var matchingItems = lv.Where(i => i.Text.Contains(textBoxCriteria.Text));

【讨论】:

    【解决方案2】:

    您可以遍历Listbox 并检查该项目是否包含该单词,但您不能隐藏该项目,因为 ListBox 无法做到这一点。你必须选择:
    1.隐藏实际的ListBox并在同一位置创建一个新的或
    2. 使用 WPF。
    使用此代码检查项目是否包含文本框中的文本:

    foreach (var listBoxItem in listBox1.Items)
    {
        if(listBoxItem.ToString().Contains(txtBox.Text))
        {
            //Item contains word, do something
        }
    }
    

    【讨论】:

    • 嗯,隐藏实际的 ListBox 并显示过滤版本即时删除每个项目并将它们放回相同的索引更简单。在 WPF 中,我将构建一个简单的 ListBox,它能够隐藏和显示项目,并通过 WpfHost Control 实现它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-05
    • 1970-01-01
    相关资源
    最近更新 更多