2010-04-21 75 views
1

我有我的窗体上的ListView控件在细节模式设置是这样的:获取从一个ListView数据到一个数组

alt text http://i40.tinypic.com/ehbti8.jpg

我想要做的,是得到的所有值数据单元格,当用户按下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 

但只有values(0)被填充有第一数据单元(在本例中为“asd”),其余数组条目为空。我已经用断点确认了这一点,并自己检查了数组条目。

我真的失去了这一点,并已尝试了大约一个小时。任何帮助将不胜感激,谢谢:)

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

回答

1

海东青是正确的约需要遍历子项目,如果你确定只有一个选择迭代项目只是混淆的东西,我会写它:

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 
+0

啊,它完美的作品!谢谢! :d – Joe 2010-04-21 19:12:19

0

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

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

我从我的模块中的子例程填充它。我正在通过这些子项目迭代不是吗?用'item.SubItems(i).Text'。 – Joe 2010-04-21 18:59:52

+0

在您的代码中,我变量计数的项目不是子项目。 – Costin 2010-04-21 19:13:18

0

试试这个..

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