Свойство 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
Я не уверен, в каком порядке ListItems итерируются в моем цикле For.Вполне возможно, что то, что будет назначено для 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