我试图通过列表视图中的文本来获取项目的索引
例如,我有一个列表视图,其中包含项目:" item1"," item2" ..等等
我试图获得" item2"的索引。像这样:
MessageBox.Show(listView1.Items.IndexOf("item2");
但它不起作用...... 有什么帮助吗?
答案 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());