CheckedListBox抛出参数超出范围时不应该

时间:2013-07-24 02:10:43

标签: c# .net winforms checkedlistbox

这是一个.NET 3.5 Winforms项目。

尝试以编程方式检查复选框列表中的复选框时,我遇到了一个奇怪的错误。

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 {“索引超出范围。必须是   非负数且小于集合的大小。\ r \ nParameter   name:index“}

我也可以看到第一个复选框。其余的不是因为上述例外。

这太令人困惑了。仅出于测试目的,我尝试首先添加项目,然后通过第二个循环以编程方式检查它们,但仍然会出现相同的问题,即使复选框的计数为5。

我尝试使用SetItemCheckState。同样,同样的问题。

我想我可能已经破坏了CheckedListBox组件本身,或者我遇到的一些奇怪的框架bug。

对此处发生的任何见解都会非常感激。

3 个答案:

答案 0 :(得分:0)

尝试以下方法:

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

答案 1 :(得分:0)

这非常令人沮丧,但实际上它确实是一个框架错误(也许Winforms Designer有一个打嗝)。

删除并读取设计器中的checkedlistbox使其正常工作。没有其他变化。

答案 2 :(得分:-1)

我假设“cBListForming”是一个复选框列表。

检查您拥有的复选框列表的编号。这可能是问题的原因。

cBListForming.Count();