Выбранные элементы списка — для добавления данных в массив VB.net

#vb.net #selecteditem #listboxitem

#vb.net #selecteditem #элемент списка

Вопрос:

Пытаюсь проверить, какие элементы списка выбраны. Я хочу разрешить пользователю выбирать несколько элементов в списке, чтобы строка могла быть сохранена в массиве, где также хранится список. Это система переклички (задача для моих студентов 10-го курса). Я просто не могу правильно подобрать синтаксис для списка. Для списка установлен режим множественного выбора.

Кстати

 If Listbox.SelectedItem = true Then
  

Не работает. Возвращает ошибку.

Мой приведенный ниже код возвращает первый выбранный элемент (в окне сообщения), но не остальные. Сейчас я просто хожу по кругу. должен быть более простой способ. Мысли?

 Private Sub BtnRollCall1_Click(sender As Object, e As EventArgs) Handles btnRollCall1.Click
    Dim ExcursionArray(29, 4) As String
    Dim selected As Integer
    Dim LoadNames As StreamReader = File.OpenText("ClassList.txt")
    For i = 0 To 29
        ExcursionArray(i, 0) = (LoadNames.ReadLine())
        lbxRollCall.Items.Add(ExcursionArray(i, 0))
    Next

    For Each SelectedItem As string In lbxRollCall.SelectedItems
        selected = lbxRollCall.SelectedIndex
        ExcursionArray(selected, 1) = "a"
    Next

    For x = 0 To 29
        If (ExcursionArray(x, 1) = "a") Then
            MsgBox(ExcursionArray(x, 0))
        End If

    Next
End Sub
  

Ответ №1:

Похоже, что на самом деле вы хотите обновить 2D-массив и установить для второго «столбца» значение «a», если соответствующая «строка» выбрана в ListBox . Один из способов сделать это будет выглядеть так:

 For Each selectedIndex In lbxRollCall.SelectedIndices
    ExcursionArray(selectedIndex, 1) = "a"
Next
  

Другой вариант будет выглядеть так:

 For i = 0 To ExcursionArray.GetUpperBound(0)
    If lbxRollCall.GetSelected(i) Then
        ExcursionArray(i, 1) = "a"
    End If
Next