2010-03-17 3 views
0

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

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

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

ответ

1

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

 
listBox.Items[0] 
+0

C# Synta х, но, тем не менее, верно. –

+0

Это сработало спасибо :) –

1

сообщение об ошибке означает, что ListBox класс не имеет индексатор (это означает, что она Безразлично 't определить свойство, известное как 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 

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

For Each item in listbox.Items 
    if searchString.contains(item.ToString()) then 
    end if 
Next