【发布时间】:2012-07-23 05:57:59
【问题描述】:
如果列表框中没有选择任何项目,则代码可以正常工作。
如果在 ListBox 中选择了至少一个项目,则在计算第一个项目后 foreach 迭代中断。异常是 InvalidOperationException,详细信息显示 Items 集合已被修改。
foreach (object item in listBoxFiles.Items) //InvalidOperationException occurs
{
if (listBoxFiles.SelectedItems.Contains(item))
{
//do nothing
}
}
编辑:我在寻找类似 ListBoxItem.IsSelected 的东西,但它不存在。
【问题讨论】:
-
你确定
//do nothing对项目集合没有任何作用吗? -
是的,事实上,在删除 if 子句中的所有代码后,错误仍然可以重现。
-
如果没有选择它也会抛出。
-
如果我选择一个项目然后取消选择它,就会抛出异常。如果我不选择/取消选择任何项目,则不会引发异常。奇怪的行为,我认为这是 WinForm 库中的一个错误。
-
我创建了一个带有列表框和按钮的表单。 LB 填充了一些项目,并且按钮的 click-Handler 执行上面的代码。即使我从未选择任何项目,也会引发交互。
标签: c# .net winforms listbox iteration