I’m trying to retrieve the SubItem in my ListView from another thread, but I keep getting the Item instead of the SubItem. I’m not sure how to code this properly. Below is the code I’m using:
Delegate Function lvExtractedCallback(ByVal x As Integer) As String
Private Function lvExtracted(ByVal x As Integer) As String
Static Dim lvName As String
If Me.OptionsList.InvokeRequired Then
Dim lvEC As New lvExtractedCallback(AddressOf lvExtracted)
Me.Invoke(lvEC, (New Object() {x}))
Else
lvName = OptionsList.Items.Item(x).SubItems.Item(0).Text
End If
Return lvName
End Function
Private Sub GetSubItem()
Dim subItemText as String
For i as Integer = 0 to 15
subItemText = lvExtracted(x)
Debug.Print subItemText
Next
End Sub
The code is only ever getting the main text of the ListViewItem because you are returning SubItem.Item(0) for the Xth item every time. SubItem.Item(0) is the Item’s Text field. If you only ever want to get the 1st subitem, then change the SubItem.Item(0) to SubItems.Item(1). If you want to get an arbitrary subitem, see the example below.
From MSDN:
Exmaple: