2010-09-22 86 views
2

我想使用的columnHeader名称访问从列表视图中的数据,但我得到的错误如何通过键访问ListView子项?

LVProduct.FocusedItem.SubItems("Name").Text 

那么,你如何使用带有字符串参数的功能?我不想使用索引它太混乱了

回答

8

当您创建的子项,则必须设置名称属性是的它驻留的列。

访问器在ListViewSubItem类中查找名称字段。

如果没有设置,您正在执行的[“Name”]。text操作将返回一个空指针类型错误。

或者换句话说,按键搜索不按列名搜索。 根据您在创建子项目时在SubItem.Name中设置的值进行搜索。

+0

https://social.msdn.microsoft.com/Forums/windows/zh-CN/b96f9fbe-e128-4b49-833d-2a5f6e678dae/access-listview-subitem-text-by-column-header?forum=winforms – 2015-12-04 18:55:53

+0

奇怪...我收到一个空字符串时,我的消息箱SubItems或ColumnHeaders的.Name。 – 2015-12-04 19:16:28

-1

你应该使用c#“索引器”。您可以选择使用sqare括号调用:

LVProduct.FocusedItem.SubItems["Name"].Text 

如果您想了解更多关于索引,看this link on MSDN

+0

嗨帖子被标记为VB – 2010-09-22 17:07:05

+0

对不起,我的歉意......你有什么错误? – 2010-09-22 17:13:23

1

创建子项目时,您需要设置name属性。例如:

listViewItem.SubItems.Add(
    New ListViewSubItem With {.Name = "Name", .Text = "yes"} 
) 

然后你可以使用你的现有代码:

LVProduct.FocusedItem.SubItems("Name").Text 
12

如果你想获得基于列的子项,这是最简单的方法。

LVProduct.FocusedItem.SubItems(columnHeader1.Index).Text 

columnHeader1将是您想要SubItem的ColumnHeader的名称。

+0

很好的解决方案。不幸的是,我不能给一个以上的赞成票。 – prabhakaran 2012-05-24 05:57:09