C# 循环不';t遍历listview

C# 循环不';t遍历listview,c#,listview,C#,Listview,有人能帮我解决这个问题吗?我试图在listview中搜索通过文本框输入的字符串,并记录位置索引值。现在虽然代码可以改进。。。它起作用了。我遇到的问题是循环不会迭代。代码仅显示第一个索引值,即使出现了多个索引值。 有人能告诉我如何让这个循环到循环吗 先谢谢你 foreach (ListViewItem item in listView1.Items){ foreach (ListViewItem.ListViewSubItem subItem in item.SubItems){

有人能帮我解决这个问题吗?我试图在listview中搜索通过文本框输入的字符串,并记录位置索引值。现在虽然代码可以改进。。。它起作用了。我遇到的问题是循环不会迭代。代码仅显示第一个索引值,即使出现了多个索引值。 有人能告诉我如何让这个循环到循环吗

先谢谢你

 foreach (ListViewItem item in listView1.Items){
    foreach (ListViewItem.ListViewSubItem subItem in item.SubItems){
        if (subItem.Text.ToLower().StartsWith(textBox1.Text.ToLower())){
            var index = listView1.FindItemWithText(textBox1.Text.ToLower()); 
            MessageBox.Show(listView1.Items.IndexOf(index).ToString());
            count++;
        }                
    }   
 }

也许像这样的办法行得通

  var index = listView1.Select(x=>x.IndexOf(textBox1.Text.ToLower(), StringComparison.Ordinal));

你需要改变这个

var index=listView1.FindItemWithText(textBox1.Text.ToLower());
MessageBox.Show(listView1.Items.IndexOf(index.ToString())

对此

var index=item.index;
MessageBox.Show(listView1.Items[index].ToString())


@johnny mopp认为finditemwithtext只返回一个项目是正确的,因此,如果您只需要第一个项目,它会使循环完全冗余。

从docs for:中查找以给定文本值开头的第一个ListViewItem。您需要具有开始索引的版本:代码中有2个错误。第一个在var index=item.index行,所以我将item.index改为item.index,这个错误消失了。第二个错误出现在第2行:错误消息是:-非发票成员“ListView.Items”不能像方法一样使用。抱歉,在我的iPad上编写了代码。它应该是Items[index]而不是Items(index),所以我已经更新了我的代码。谢谢你的帮助。。。但是,我遇到了一个错误:-无法将void赋值给隐式类型的变量。