2010-04-20 95 views
0

我有一个ListView控件在详细模式下设置,并且在按钮按下时,我想从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行的数据。

干杯。

+0

在点击按钮之前是否实际选择了任何值? – 2010-04-20 08:34:54

+0

是啊,我确定我选择了一些东西:) – Andrew 2010-04-20 08:48:34

回答

0

只是为了检查,你是否知道item.SubItems(1).Text会从第二列中获取文本?而且,因为您使用SelectedItems,它只会查看ListView中当前选定的项目。

编辑: 另外,你确定在ListView中总是会有最多5个选定的项目吗? 与

Dim values(0 To 4) As String 
+0

是的,我知道它是基于0,看着选定的项目是我想要的:) – Andrew 2010-04-20 08:37:44

+0

然后,我想不出任何更多,因为上面的代码工作(最多5个选项)。 – 2010-04-20 08:39:39

+0

您没有任何隐藏的(0宽度)列,以便您可能读错了一个? – 2010-04-20 08:40:50

1

否则你就会有问题,你需要遍历子项目,而不是选定的项目。修复:

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 
0

老问题,我知道......也许这有助于someones引用..在搜索别的东西时偶然发现了这个问题。

这个工程......不知道楼主在某种程度上用于所选项目的empy colelciton ...

此外,动态调整阵列根据选定的项目,以克服不可预见的错误...

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 ...子项(2)的.text ..等

干杯

2

这里是单行的解决方案:

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