0

我知道还有其他类似的问题,但由于某种原因,似乎没有人有这个问题。我正在尝试填充像这样在加载时创建的 2 列列表视图。

With lstShipMethods
    .View = View.Details
    .FullRowSelect = True
    .HeaderStyle = ColumnHeaderStyle.None ' set to whatever you need
    .Columns.Clear() ' make sure collumnscollection is empty
    ' Add 3 columns
    .Columns.AddRange(New ColumnHeader() {New ColumnHeader(), New ColumnHeader()})
End With

lstShipMethods.Items.Add(New ListViewItem({"col1data", "col2data1"}))
lstShipMethods.Items.Add(New ListViewItem({"col1data", "col2data2"}))

它填充得很好,但是当我尝试从这样的选定项目列中获取数据时

Private Sub lstShipMethods_SelectedIndexChanged(sender As Object, e As EventArgs) Handles lstShipMethods.SelectedIndexChanged
    Dim val As String = lstShipMethods.FocusedItem.SubItems(1).Text
    MessageBox.Show(val)
End Sub

第一次单击后,它将始终显示两个值,即第一行的第二列,第二行将在MessageBox.

4

1 回答 1

1

您可以改用ItemSelectionChanged事件。

Private Sub lstShipMethods_SelectedIndexChanged(sender As System.Object, e As ListViewItemSelectionChangedEventArgs) Handles lstShipMethods.ItemSelectionChanged
    If e.IsSelected Then
        Dim val As String = lstShipMethods.FocusedItem.SubItems(1).Text
        MessageBox.Show(val)
    End If
End Sub
于 2013-10-15T02:34:14.630 回答