将ListView值转换为字符串数组?

时间:2010-04-20 08:29:34

标签: vb.net listview arrays detail

我在详细信息模式下设置了ListView控件,按下按钮我想从ListView中的该行检索所有列值。

到目前为止,这是我的代码:

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    Dim items As ListView.SelectedListViewItemCollection = _
    Me.ManageList.SelectedItems
    Dim item As ListViewItem
    Dim values(0 To 4) As String
    Dim i As Integer = 0
    For Each item In items
        values(i) = item.SubItems(1).Text
        i = i + 1
    Next
End Sub

values只是一个空数组。有任何想法吗?我只是希望values数组填充ListView行的数据。

干杯。

4 个答案:

答案 0 :(得分:2)

以下是单行解决方案:

mylistview.Items.Cast(Of ListViewItem).Select(Function(lvi As ListViewItem)lvi.SubItems(1).Text).ToArray()

答案 1 :(得分:1)

您需要迭代SubItems,而不是选定的项目。修正:

If Me.ManageList.Items.Count <> 1 Then Exit Sub
Dim row As ListViewItem = Me.ManageList.Items(0)
Dim values(0 To row.SubItems.Count-1) As String
Dim i As Integer = 0
For Each item As ListViewItem.ListViewSubItem In row.SubItems
  values(i) = item.Text
  i = i + 1
Next

答案 2 :(得分:0)

只是要检查一下,你知道item.SubItems(1).Text会从第二列得到文本吗?而且,由于您使用的是SelectedItems,因此它只会查看ListView中当前选定的项目。

编辑: 此外,您确定ListView中最多只有5个选定项吗? 否则你会遇到问题

Dim values(0 To 4) As String

答案 3 :(得分:0)

老问题,我知道......也许这有助于某些人参考..在搜索其他内容时偶然发现了这个问题。

这是有效的...不确定原始海报是否以某种方式使用了所选项目的强大功能......

此外,根据所选项目动态调整数组大小以克服不可预见的错误...

    Dim valueArray(mylistview.SelectedItems.Count - 1) As String
    Dim i As Integer

    For Each Item As ListViewItem In mylistview.SelectedItems
        valueArray(i) = Item.Text
        i += 1
    Next

要获取子项,请使用item.subitems(1).text ... subitems(2).text .. etc

干杯