String a = new String("foo");
String b = new String("foo");
System.out.println(a == b); // prints false
System.out.println(a.equals(b)); // prints true
Убедитесь, что вы понимаете, почему. Это потому, что сравнение ==
сравнивает только ссылки; equals()
метод сопоставляет содержимое по символу.
Когда вы вызываете new для a
и b
, каждый получает новую ссылку, указывающую на "foo"
в таблице строк. Ссылки разные, но контент один и тот же.
Вы можете выполнить цикл For
для проверки каждой строки в списке и выполнить что угодно с выбранными строками. В этом примере я показываю второй столбец из выбранных элементов в списке lstLocations . (Нумерация столбцов начинается с нуля.)
Private Sub cmdShowSelections_Click()
Dim lngRow As Long
Dim strMsg As String
With Me.lstLocations
For lngRow = 0 To .ListCount - 1
If .Selected(lngRow) Then
strMsg = strMsg & ", " & .Column(1, lngRow)
End If
Next lngRow
End With
' strip off leading comma and space
If Len(strMsg) > 2 Then
strMsg = Mid(strMsg, 3)
End If
MsgBox strMsg
End Sub
Примечание. Я предполагал, что вам нужны выбранные элементы из списка. Если вы хотите всех элементов, независимо от того, выбраны они или нет, вы можете использовать .ItemData
, как предложил @DavidRelihan . Однако в этом случае вы можете получить их из списка .RowSource
.
Вот как вы выполняете итерации в ListBox:
Dim i as Integer
For i = 0 to Me.ListBoxName.ListCount -1
'Access each item with
'Me.ListBoxName.ItemData(i)
Next i