удаление строки из listbox

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Anta
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 106
Зарегистрирован: 19.08.2012 (Вс) 22:00

удаление строки из listbox

Сообщение Anta » 13.01.2013 (Вс) 5:58

Здраствуйте, необходимо удалить строку из listbox во время события TextChange, происходящему в combobox. То есть пользователь выбирает строку из выпадающего списка в combobox и такая строка должна быть удалена из списка listbox,но мой код работает, только в том случае, если искомая строка является первой в списке, в других случаях вылетает ошибка: InvalidArgument= value '-1' for index.
Код: Выделить всё
Private Sub ComboBox1_TextChanged(sender As Object, e As EventArgs) Handles ComboBox1.TextChanged
        Dim k As Integer

        For k = ListBox1.Items.Count - 1 To 0 Step -1

            k = ListBox1.FindStringExact(ComboBox1.Text)

            ListBox1.Items.RemoveAt(k)

ListBox1.Refresh()---если добавить эту строку, то удаляется нужная строка в любой позиции, но сразу же после удаления снова вылетает ошибка индекс=-1

        Next

    End Sub

Подскажите как решить проблему. Получается, что в списке listbox не содержится эелементов, если значение индекса элемента равно -1?

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 13.01.2013 (Вс) 11:28

Anta писал(а):For k = ListBox1.Items.Count - 1 To 0 Step -1

Что это?

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: удаление строки из listbox

Сообщение Viper » 13.01.2013 (Вс) 18:26

Anta, а зачем все это делать в цикле (тем более, что в середине цикла изменяется переменная цикла)? При помощи ListBox.FindExactString найти позицию искомой строки и, если она найдена, удалить ее при помощи ListBox.RemoveAt. Никакого цикла организовывать не надо.
Весь мир матрица, а мы в нем потоки байтов!

Anta
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 106
Зарегистрирован: 19.08.2012 (Вс) 22:00

Re: удаление строки из listbox

Сообщение Anta » 13.01.2013 (Вс) 18:30

Qwertiy писал(а):
Anta писал(а):For k = ListBox1.Items.Count - 1 To 0 Step -1

Что это?
Спасибо, Qwertiy и Viper!!! А если предположить, что пользователь выбрал элемент, уже удаленный ранее, то с чем сравнить "к"? if k =? (nullable) то msg("Элемент отсутствует в списке")

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 13.01.2013 (Вс) 20:52

Anta писал(а):А если предположить, что пользователь выбрал элемент, уже удаленный ранее, то с чем сравнить "к"?

Ответ:
Anta писал(а):в других случаях вылетает ошибка: InvalidArgument= value '-1' for index.

Anta
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 106
Зарегистрирован: 19.08.2012 (Вс) 22:00

Re: удаление строки из listbox

Сообщение Anta » 13.01.2013 (Вс) 22:11

:D догадалась)) Спасибо


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12

    TopList