ListView SelectedItem属性不会返回在您的ListView上选择的项目集合,因此您不能显式获取第一个选定项目,第二个选定项目等。您将需要循环遍历所有ListItems ListView并检查是否每个都被选中。如果是,就做你想做的事。
我在示例代码中看到的一个问题是您使用的是ListView DblClick事件。我可能是错的,但它看起来每当它触发时,只能选择一个ListView项目(触发该事件的项目)。解决这个问题的方法是将你的代码放到一个新的程序中。这是应该工作的一个:
Private Sub GetSelectedItems()
' Make sure exactly two items are selected on our ListView.
If (CheckListViewSelectedItemCount(listview1, 2)) Then
Dim blnFoundFirstItem As Boolean
blnFoundFirstItem = False
Dim i As Integer
' Find out which items are selected.
For i = 1 To listview1.ListItems.Count
If (listview1.ListItems(i).Selected) Then
' Assign the Text of the 'first' selected item to Textbox1.Text.
If (Not blnFoundFirstItem) Then
Textbox1.Text = listview1.ListItems(i).Text
blnFoundFirstItem = True
' Assign the Text of the 'second' selected item to Textbox2.Text.
Else
Textbox2.Text = listview1.ListItems(i).Text
End If
End If
Next i
Else
MsgBox "You need to select two items."
End If
End Sub
我不知道在我的For循环中迭代通过哪种顺序ListItems。在我的代码中,可能要分配给Textbox1.Text的内容可能要分配给Textbox2.Text。
您需要的代码至少在ListView上选择了两个项目。我不知道VB6是否有办法返回所选项目的数量,所以我写了一个小功能来做到这一点:
' Return True if the passed ListView control has a number of selected items that's equal to the intExpectedItemCount parameter.
Private Function CheckListViewSelectedItemCount(listView As listView, intExpectedItemCount As Integer) As Boolean
Dim intSelectedItemCount As Integer
intSelectedItemCount = 0
Dim i As Integer
For i = 1 To listView.ListItems.Count
If (listView.ListItems(i).Selected) Then
intSelectedItemCount = intSelectedItemCount + 1
End If
Next i
CheckListViewSelectedItemCount = (intSelectedItemCount = intExpectedItemCount)
End Function