Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 搜索整个listview_C#_Listview - Fatal编程技术网

C# 搜索整个listview

C# 搜索整个listview,c#,listview,C#,Listview,有人能给我解释一下为什么我的代码没有在列表视图中搜索整个对象吗。基本上,我试图找到与文本框中输入的字符串匹配的所有文本。目前,代码只搜索第一列并停止 如何让它搜索所有5列 见下面的代码: private void button3_Click(object sender, EventArgs e) { string s = " Search Via Forename"; int result = 0; int count = 0; result = strin

有人能给我解释一下为什么我的代码没有在
列表视图中搜索整个对象吗。基本上,我试图找到与文本框中输入的字符串匹配的所有文本。目前,代码只搜索第一列并停止

如何让它搜索所有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;
}
向我解释为什么我的代码没有在ListView中搜索整个对象

因为您从未在循环中使用
子项
。我猜您是想比较
子项而不是

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);
        }
    }
}

@BOB.G循环遍历每个项目的所有
ListViewSubItem
,基本上检查每个列。但你不用这个变量。在您发布的代码中,检查行是否以特定文本开头。但是您想检查是否有任何行以该文本开头,因此请使用您第二次修改时使用的迭代器。。。。想一想,这很有道理,但是,它给了我一个空白列表。我想我得再想一想。之前,它仅用于显示从第一个column@BOB.G什么是空白名单?名单是空的吗?了解如何填充ListView很重要?=!!您是使用子项,还是只是添加项并使用ToString方法进行显示?计数器指示循环正在工作。程序现在没有显示结果。请原谅我的术语。。。。空白列表意味着它没有显示结果。listview由程序中的另一个过程填充,因此始终会有一个包含35个对象/条目的listview。如何填充
listview