2010-09-22 85 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