2015-09-04 3 views
-1

У меня есть список, в котором есть номера в качестве элементов.Как получить индекс элемента в списке?

ID | AT 
1  5 
2  3 
3  7 
4  10 
5  6 

Теперь я хочу найти товар и получить его индекс. Например, у меня есть текстовое поле и в нем «4». Он покажет индекс ID = 4, который должен быть 3. Если я ищу «1», он должен быть 0 и т. Д.

Я попытался

list = lvNPtable.Items(lvNPtable.Items.IndexOf(textbox1.text)) 
Msgbox(list) 

, но не работает. У кого-нибудь есть идея, как это сделать?

+0

'Dim ndx = myLV.Items.Find (TextBox1.Text, True)' использовать false, если вы не хотите искать подтемы – Plutonix

+0

Ошибка, приглашение не может быть преобразовано в строку при установке ndx в Msgbox – KPA

ответ

2

Это должно работать для вас:

Dim intIndex As Integer = lvNPtable.FindItemWithText(TextBox1.Text).Index 

Способ по ListViewFindItemWithText(String) возвратит ListViewItem, который вы можете использовать .Index свойство, чтобы получить значение индекса самого элемента, как показано выше.

Как TimSchmelter отметил в комментариях, есть и другие параметры, которые можно установить при поиске, с помощью функции перегрузок:

Dim intIndex As Integer = ListView1.FindItemWithText(TextBox1.Text, False, 0, False).Index 

Первого параметром является то, что вы ищете, второй параметр для поиска других столбцы в представлении списка, третий - начальный индекс для поиска, а четвертый - если вы разрешаете частичным значениям возвращать соответствие.

+0

Спасибо! Он работает: D – KPA

+0

Стоит отметить, что OP должен использовать другую перегрузку, такую ​​как [this] (https://msdn.microsoft.com/en-us/library/x03e4732 (v = vs.110) .aspx). В противном случае допускаются и частичные совпадения в разных столбцах. –

+0

@TimSchmelter Хорошая точка. Я обновил свой ответ, чтобы отразить перегруженную функцию. – RianBattle

Смежные вопросы