搜索整个列表视图

时间:2017-11-07 16:44:24

标签: c# listview

有人可以向我解释为什么我的代码不会搜索ListView中的整个对象。基本上我试图找到与文本框中输入的字符串匹配的所有文本。目前,代码只搜索第一列并停止...

如何让它搜索所有5列?

见下面的代码:

private void button3_Click(object sender, EventArgs e)
{
    string s = "    Search Via Forename";
    int result = 0;
    int count = 0;
    result = string.Compare(textBox1.Text, s);

    if ((result == 0) || (String.IsNullOrEmpty(textBox1.Text))){
        MessageBox.Show("Please input forename...");
        return;
    }

    foreach (ListViewItem item in listView1.Items){
        foreach (ListViewItem.ListViewSubItem subItem in item.SubItems){
            if (item.Text.ToLower().StartsWith(textBox1.Text.ToLower())){
                count++;
                statusBar1.Panels[2].Text = "Found: " + count.ToString();
            }else{
                listView1.Items.Remove(item);
            }
        }
    }

    button1.Text = "Clear";
    textBox1.Visible = false;
    button3.Visible = false;
    button2.Visible = false;
}

1 个答案:

答案 0 :(得分:1)

  

向我解释为什么我的代码不会搜索listview中的整个对象

因为你从不在循环中使用subItem。我想你的意思是比较subItem而不是item

foreach (ListViewItem item in listView1.Items){
    foreach (ListViewItem.ListViewSubItem subItem in item.SubItems){

              ---- use subItem here        
              |
              v
        if (subItem.Text.ToLower().StartsWith(textBox1.Text.ToLower())){
            count++;
            statusBar1.Panels[2].Text = "Found: " + count.ToString();
        }else{
            listView1.Items.Remove(item);
        }
    }
}