繁体   English   中英

通过 ListBox.Items 进行交互时的异常

[英]Exception when Interating through ListBox.Items

如果在 ListBox 中没有选择任何项目,则代码工作正常。

如果在 ListBox 中至少选择了一项,则在评估第一项后 foreach 迭代会中断。 异常是 InvalidOperationException,详细信息显示 Items 集合已被修改。

foreach (object item in listBoxFiles.Items) //InvalidOperationException occurs
{
    if (listBoxFiles.SelectedItems.Contains(item)) 
    {
        //do nothing
    }
}

编辑:我正在寻找类似ListBoxItem.IsSelected 的东西,但它不存在。

我可以重现这个问题。 SelectedItems的访问似乎正在改变Items ,而不是对Contains的调用。 它不应该那样做。 我暂时没有解释。

解决方法:

如果您检查item是否包含在SelectedItems您可以立即迭代SelectedItems 另一种选择是在迭代之前复制SelectedItems ,如下所示:

List<object> selectedItems = new List<object>();
selectedItems.AddRange( listBoxFiles.SelectedItems.OfType<object>() );

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM