Список VB не может быть проиндексирован, так как не имеет значения по умолчанию - PullRequest
0 голосов
/ 17 марта 2010

У меня есть список, и я хочу просмотреть все элементы, чтобы увидеть, находится ли искомая строка внутри. Я знаю, что могу сделать .contains, но это не будет смотреть на подстроки. Код, который я использую, выглядит следующим образом:

While tempInt > Listbox.items.count then
if searchString.contains(listbox(tempInt)) then
end if
tempInt+=1
end while

Все в цикле в порядке, но VB выдает ошибку в части списка (tempInt). Ошибка: «класс windows.forms.listbox не может быть проиндексирован, поскольку он не имеет значения по умолчанию». Может кто-нибудь помочь обойти значение по умолчанию дерьмо? Я попытался вставить пустую строку, но без изменений.

Ответы [ 2 ]

1 голос
/ 17 марта 2010

Сообщение об ошибке означает, что класс ListBox не имеет индексатора (это означает, что он не определяет свойство, известное как default в VB и свойство индексатора или this в C #, что может передается индекс для получения значения).

Вы ищете listbox.Items(tempInt)

Кроме того, использование цикла For предпочтительнее выбранного вами While, хотя лучше всего будет For Each (при условии, что вам не нужен индекс)

For tempInt as Integer = 0 to listbox.Items.Count - 1
    if searchString.contains(listbox.Items(tempInt).ToString()) then
    end if
Next

Или, если индекс вам не подходит, используйте For Each

For Each item in listbox.Items
    if searchString.contains(item.ToString()) then
    end if
Next
1 голос
/ 17 марта 2010

Используйте свойство Items списка, которое доступно через индексатор, например, массив ...

listBox.Items[0]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...