如何通过它的文本获取listview项的索引

时间:2014-06-24 09:44:32

标签: c# forms listview


我试图通过列表视图中的文本来获取项目的索引 例如,我有一个列表视图,其中包含项目:" item1"," item2" ..等等 我试图获得" item2"的索引。像这样:

MessageBox.Show(listView1.Items.IndexOf("item2");

但它不起作用...... 有什么帮助吗?

2 个答案:

答案 0 :(得分:8)

ListView.FindItemWithText方法可以满足您的需求。 看看:msdn

var item = listView1.FindItemWithText("item2");

if (item != null)
{
    MessageBox.Show(listView1.Items.IndexOf(item).ToString());
}

答案 1 :(得分:2)

我们有ListView,其ID为listView1。为了获得此列表视图中的项目,我们必须使用以下代码:

listView1.Items

listView1.Items的类型是什么?

listView1.Items的类型为ListViewItemCollection

有关此问题的更多文档,请查看here

此集合中存储的对象类型是什么, listView1.Items

listView1.Items中存储的对象类型为ListViewItem

有关此课程的更多文档,请查看here

为什么 MessageBox.Show(listView1.Items.IndexOf("item2"); 不起作用

为什么你得到你在评论上发布的错误的原因是名为IndexOf的方法,将ListViewItem类型的对象作为参数,并将参数作为参数传递给该方法类型为string

实际上,正如您可以看到here,名为IndexOf的方法的签名如下:

 public int IndexOf(
    ListViewItem item
)

因此,为了获得所需项目的索引,您必须转到名为IndexOf a ListViewItem的方法。因此,我建议您尝试以下代码:

// Select the first ListViewItem of items, whose Text is item2
ListViewItem item = listView1.Items 
                             .Cast<ListViewItem>()
                             .FirstOrDefault(x=>x.Text=="item2");

MessageBox.Show(listView1.Items.IndexOf(item).ToString());