C #: ArgumentOutOfRangeException не было обработано кодом пользователя - PullRequest
3 голосов
/ 24 января 2012

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

Я сделал некоторый код, но когда я его пробую, я сохраняюполучение:

ArgumentOutOfRangeException не было обработано кодом пользователя

Подробнее об ошибке:

{"InvalidArgument = значение '1'недопустимо для' SelectedIndex '. \ r \ nИмя параметра: SelectedIndex "}

Это мой код:

        listBox1.Items.Remove(listBox1.SelectedItem);
        listBox1.SelectedIndex = + 1;

РЕДАКТИРОВАТЬ:

Спасибоза помощь всем ребята!Я удалил проблему, не удаляя элементы и просто заставляя ее повторяться.

Ответы [ 4 ]

2 голосов
/ 24 января 2012

Вы должны проверить, существует ли предмет, который вы пытаетесь выбрать, на самом деле.

int index = listBox1.SelectedIndex;
listBox1.Items.RemoveAt(index);
If (index < listBox1.Items.Count) {
    listBox1.SelectedIndex = index; 
}

РЕДАКТИРОВАТЬ: Если вы хотите удалить элементы в цикле, рекомендуется начать с конца, так как удаление элемента меняет положение следующих элементов. Зацикливание вверх заставит вас пропускать элемент каждый раз, когда вы удаляете элемент.

for (int i = listBox1.Items.Count - 1; i >= 0; i--) {
    if (listBox1.Items[i].ToString() == "whatever") {
        listBox1.Items.RemoveAt(i);
    }
}
0 голосов
/ 24 января 2012

Поскольку индексы основаны на 0, установка SelectedIndex в 1 выбирает значение second в списке. Я предполагаю, что это не работает, когда вы удалили все, кроме одного из значений и пытаетесь установить SelectedIndex на второе.

0 голосов
/ 24 января 2012

Хотите выбрать первый элемент в списке?Если это так, код будет:

if(listBox1.Items.Count > 0) listBox1.SelectedIndex = 0;
0 голосов
/ 24 января 2012

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

Будьте осторожны, selectedIndex основывается на нуле, а не на основе.

MSDN сообщает о вашей ошибке:

ArgumentOutOfRangeException: назначенное значение меньше -1 или больше или равно количеству предметов.

Поскольку ошибка указывает, что это происходит, когда вы устанавливаете SelectedIndex в 1, я предполагаю, что у вас есть только один элемент в списке (индекс = 0), когда вызывается этот код.

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