«Индекс был вне диапазона» с выбранным элементом checkboxlist

#asp.net #vb.net #checkboxlist

#asp.net #vb.net #список флажков

Вопрос:

Как я могу исправить эту ошибку? Если первый элемент выбран в checkboxlist CBLAdd, эта ошибка не возникает. Если выбран второй, третий и т. Д. Элемент (А первый элемент не выбран), я получаю сообщение об ошибке.

Система.ArgumentOutOfRangeException: ‘Индекс был вне диапазона. Должно быть неотрицательным и меньше размера коллекции. Имя параметра: индекс’

что происходит в этой строке If CBLAdd.Items(i).Selected Then в приведенном ниже коде:

 Protected Sub BtnAdd_Click(sender As Object, e As EventArgs) Handles BtnAdd.Click
    If CBLAdd.SelectedIndex >= 0 Then
        For i As Integer = 0 To CBLAdd.Items.Count - 1
            If CBLAdd.Items(i).Selected Then
                'Code removed from here - irrelevant to my question
            End If
        Next
    End If
End Sub
 

Комментарии:

1. Вы уверены, что удаленный оттуда код не имеет отношения к вашему вопросу ? Может быть, вы модифицируете коллекцию?

2. Также убедитесь, что у вас есть элементы в флажке и они не подвергаются манипуляциям. Что-то подобное помогло бы, если (CBLAdd.SelectedIndex >= 0 И CBLAdd.SelectedIndex < CBLAdd. Товары. Количество) Затем….. ЗАВЕРШИТЬ, если

3. Покажите нам «Код, удаленный отсюда — не имеет отношения к моему вопросу», я думаю, что вы изменяете коллекцию элементов

4.Является ли .Selected вообще допустимым? Я только что попробовал ваш код, и с включенной опцией Strict я получаю ошибку поздней привязки. Intellisense выдает только Equals , GetHashCode , GetType amp; ToString Ошибка, которую я получаю, если я запускаю ее с параметром Strict Off, является MissingMemberException Public member 'Selected' on type 'String' not found