Как решить проблему " индекс был вне диапазона. Должно быть неотрицательным и меньше размера коллекции." в ASP .NET с использованием C#
мой код выглядит следующим образом
я хочу, чтобы я выбирал некоторые элементы из списка, а выбранные элементы автоматически добавлялись в другой список и удалялись из первого списка .
в asp.net использование c#.
Что я уже пробовал:
охраняемых недействительными ListBox3_SelectedIndexChanged(объект отправителя, EventArgs в электронной)
{
}
охраняемых недействительными ListBox4_SelectedIndexChanged(объект отправителя, EventArgs в электронной)
{
}
охраняемых недействительными Button6_Click(объект отправителя, EventArgs в электронной)
{
int i;
for (i = 0; i <= ListBox3.Предметы.Граф; i++)
{
если (ListBox3.Элементы[я].Избранные == правда)
{
ListBox4.Предметы.Добавить(ListBox3.SelectedItem);
ListBox3.Предметы.Удалить(ListBox3.SelectedItem);
}
}
}
}
F-ES Sitecore
Вы перебираете количество элементов в ListBox3 (допустим, их 5) и удаляете их по мере их удаления (допустим, вы удаляете 2, так что остается 3), Когда вы нажимаете i being three, он ищет четвертый элемент, но есть только 3. Раньше их было 5, но вы их удалили.
Разорвите цикл, когда вы найдете выбранный элемент, и используйте цикл "while" или какой-либо другой механизм, который циклирует до тех пор, пока ничего в списке не будет выбрано. Альтернативой является добавление выбранных элементов в новый список, и как только вы пройдете через них по списку, выполните цикл по новому списку, который вы создали, и удалите\add в этом цикле.
Richard Deeming
Наверное проще просто повернуть петлю вспять:
for (int i = ListBox3.Items.Count - 1; i >= 0; i--) { ...
Я бы предположил, что, поскольку условие проверяется каждый раз, а код нигде не кэширует счетчик, он не будет пытаться итеративно пройти мимо конца списка. (До тех пор, пока условие завершения было зафиксировано, как заметил Йохен.)
Но итерация вперед все равно приведет к пропуску элементов.
F-ES Sitecore
Учитывая, что он добавляет элементы в другой элемент управления, я бы предположил, что он хочет сохранить порядок элементов, если это так, то ему также нужно будет вставить их в начало коллекции, но если это был второй раз, когда код был запущен, это также может иметь нежелательные результаты. Вещи всегда кажутся такими простыми в вашем уме, прежде чем вы начнете на самом деле кодировать :)