0

这是一个 .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\n参数名称:索引"}

我也可以看到第一个复选框被直观地选中。其余的都不是因为上面的例外。

这很莫名其妙。仅出于测试目的,我尝试先添加项目,然后通过第二个循环以编程方式检查它们,但仍然发生相同的问题,即使复选框的计数为 5。

我尝试改用 SetItemCheckState。再次,同样的问题。

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

对这里发生的事情的任何见解将不胜感激。

4

3 回答 3

1

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

在设计器中删除和读取选中的列表框使其工作。没有其他变化。

于 2013-07-24T02:33:31.030 回答
0

尝试以下操作:

for (int i = 0; i < 5; i++)
{
    cBListForming.Items.Add((i + 1).ToString(), true);
}
于 2013-07-24T02:22:46.100 回答
-2

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

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

cBListForming.Count();
于 2013-07-24T02:30:13.227 回答