2013-07-24 2 views
0

Это проект .NET 3.5 Winforms.CheckedListBox отклоняет аргумент вне диапазона, когда он не должен

У меня возникла странная ошибка, пытающаяся программно проверить флажки в checkboxlist.

for (int i = 0; i < 5; i++) 
{ 
    cBListForming.Items.Add((i + 1).ToString()); 
    cBListForming.SetItemChecked(i, true); 
} 

Таким образом, он добавляет 5 элементов, от 1 до 5, а затем добавленные флажки отмечены по умолчанию. Ничего удивительного.

На первой итерации цикла все работает нормально, но на второй итерации (i == 1) SetItemChecked выдает исключение.

System.ArgumentOutOfRange { «Индекс находился вне диапазона Должно быть неотрицательным и меньше, чем размер коллекции \ г \ nParameter имя:.. Индекс»}

я могу см. первый флажок, проверенный визуально. Остальные из них не связаны с указанным выше исключением.

Это довольно непонятно. Только для целей тестирования, я пытался добавить элементы первой и программно проверить их позже с помощью второго цикла, но все та же проблема возникает, даже если счетчик флажком 5.

Я попытался с помощью SetItemCheckState вместо. Опять же, тот же вопрос.

Я думаю, что я мог сломать сам компонент CheckedListBox или какую-то странную фреймворческую ошибку, с которой я столкнулся.

Любое понимание того, что здесь происходит, было бы действительно оценено.

+0

Я попытался запустить свой код без добавления cbList и никаких ошибок поэтому, возможно, есть что-то еще происходит, что вы можете быть видом я побежал код в ваш цикл звучит как ошибка дизайнера, когда вы либо добавить или удалить элементы управления – MethodMan

+0

у вас реализовано какое-либо событие, чтобы поймать CheckedChanged или что-то, что срабатывает при изменении check check? –

ответ

0

Это довольно сложно, но на самом деле оказаться рамочной ошибкой (Может Winforms Дизайнер была икота).

Удаление и считывание контрольного списка в дизайнере заставило его работать. Никаких других изменений.

0

Попробуйте следующее:

for (int i = 0; i < 5; i++) 
{ 
    cBListForming.Items.Add((i + 1).ToString(), true); 
} 
+0

Аналогичная проблема. Сначала добавляется (и также проверяется), но накладывается на аргументы на второй итерации. – l46kok

+0

Не могли бы вы указать какие-либо свойства/события, используемые для этого элемента управления? –

-1

Я предполагаю, что "cBListForming" список флажок.

Проверьте количество проверочных боксов, которые у вас есть. Это может быть причиной проблемы.

cBListForming.Count(); 
+0

Пожалуйста, прочтите вопрос. Я прямо заявил следующее: * даже если кол-во флажка - 5. *. – l46kok

+0

Извините за это. Я не заметил текст BOLD. Виноват. Просто спросите, используете ли вы «список флажков» или элемент управления CheckListbox http://msdn.microsoft.com/en-us/library/system.windows.forms.checkedlistbox.aspx –

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