Vb.net 将数据从ListView获取到数组中

Vb.net 将数据从ListView获取到数组中,vb.net,listview,arrays,Vb.net,Listview,Arrays,我的表单上有一个ListView控件,在详细信息模式下设置如下: 我想做的是,当用户按下Delete booking按钮时,获取数据单元格的所有值 因此,使用上述示例,我的数组将填充以下数据: values(0) = "asd" values(1) = "BS1" values(2) = "asd" values(3) = "21/04/2010" values(4) = "2" 这是我目前的代码: Private Sub Button3_Click(ByVal sender As Sys

我的表单上有一个ListView控件,在详细信息模式下设置如下:

我想做的是,当用户按下
Delete booking
按钮时,获取数据单元格的所有值

因此,使用上述示例,我的数组将填充以下数据:

values(0) = "asd"
values(1) = "BS1"
values(2) = "asd"
values(3) = "21/04/2010"
values(4) = "2"
这是我目前的代码:

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(i).Text
        i = i + 1
    Next
End Sub
但是只有
值(0)
被选择的第一个数据单元(在本例中为“asd”)填充,其余的数组条目为空。我已经用断点确认了这一点,并亲自检查了数组条目

我真的迷路了,已经试了一个小时了。任何帮助都将不胜感激,谢谢:)


另外请注意,一次只能选择一行。谢谢。

我不知道如何填充列表,但对我来说,似乎需要迭代
项。子项
以获取值。我不知道VB,但我认为您可以使用类似于:

For i As Integer = 0 To item.SubItems.Count
   values(i) = item.SubItems(i).Text

我不知道如何填充列表,但对我来说,似乎需要迭代
项.Subitems
以获取值。我不知道VB,但我认为您可以使用类似于:

For i As Integer = 0 To item.SubItems.Count
   values(i) = item.SubItems(i).Text
试试这个

    Dim values() As String

    If items.Count = 1 Then
        subitems = items(0).SubItems
        ReDim values(0 To subitems.Count - 1)
        For i As Integer = 0 To subitems.Count
            values(i) = subitems(i).Text
        Next
    Else
        Throw New Exception("boom")
    End If
试试这个

    Dim values() As String

    If items.Count = 1 Then
        subitems = items(0).SubItems
        ReDim values(0 To subitems.Count - 1)
        For i As Integer = 0 To subitems.Count
            values(i) = subitems(i).Text
        Next
    Else
        Throw New Exception("boom")
    End If

Costin关于需要迭代子项的观点是正确的,如果您确定只有一个选择迭代通过这些项只是混淆了事情,我将这样写:

  Dim values As New List(Of String)
  If ManageList.SelectedItems.Count > 0 Then
     For Each item As ListViewItem.ListViewSubItem In ManageList.SelectedItems(0).SubItems
        values.Add(item.Text)
     Next
  End If

Costin关于需要迭代子项的观点是正确的,如果您确定只有一个选择迭代通过这些项只是混淆了事情,我将这样写:

  Dim values As New List(Of String)
  If ManageList.SelectedItems.Count > 0 Then
     For Each item As ListViewItem.ListViewSubItem In ManageList.SelectedItems(0).SubItems
        values.Add(item.Text)
     Next
  End If

我从模块中的一个子例程填充它。我正在迭代子项,不是吗?使用
item.SubItems(i).Text
。在代码中,i变量计算的是项目,而不是子项目。我从模块中的子例程填充它。我正在迭代子项,不是吗?使用
item.SubItems(i).Text
。在代码中,i变量计算的是项目,而不是子项目。