0

我正在尝试从 vb.net 中的列表视图中获取值,但不断收到以下错误:

“SelectedItem”不是“System.Windows.Forms.ListView”的成员。

我想我需要将 eventargs 更改为其他事件类型,但我正在为此苦苦挣扎。有人可以指出我的错误。谢谢

Sub filllistview()
        Try
            'creatconn()
            cn.Open()
            Dim cmd As OleDbCommand = New OleDbCommand("Select * from Customers", cn)
            dr = cmd.ExecuteReader()
            While dr.Read()
                ListView1.Items.Add(dr(0).ToString())
                ListView1.Items(ListView1.Items.Count - 1).SubItems.Add(dr(1))

            End While

        Catch ex As Exception
            System.Windows.Forms.MessageBox.Show(ex.Message)
        Finally
            dr.Close()
            cn.Close()
        End Try
    End Sub

需要在这里抓

Private Sub ListView1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As EventArgs) Handles ListView1.SelectedIndexChanged
        Try
            showcontectsinlistview()
            str = ListView1.SelectedItem **<--- ERROR**

        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub
4

2 回答 2

2

这是真的,因为它不存在“SelectedItem”属性。ListView 对象有一个属性“SelectedItems”,即一个集合。所以你可以使用类似的东西:listView1.SelectedItems[0].

有了这个,您将拥有“SelectedItems”属性给出的集合中的第一个选定项目。要浏览所有选定的项目,您可以通过以下方式在它们之间循环:

For Each itm As ListViewItem In ListView1.SelectedItems
If itm.Selected Then
    For i As Integer = 0 To itm.SubItems.Count - 1
        str += itm.SubItems(i).Text
    Next
End If
Next

通过这种方式,您可以构建一个包含所有选定项目的所有值的字符串。如果您在列表视图中只有 1 个选定项目,则您将只有该值。

于 2013-11-15T09:45:54.453 回答
0

看这个例子

 Private Sub lstDirectoryInfo_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lstDirectoryInfo.SelectedIndexChanged
    Dim str As String = String.Empty

    For Each itm As ListViewItem In lstDirectoryInfo.SelectedItems
        If itm.Selected Then
            For i As Integer = 0 To itm.SubItems.Count - 1
                str = itm.SubItems(i).Text
            Next
        End If
    Next
    MessageBox.Show(str)
End Sub
于 2014-04-05T10:27:00.687 回答