获取错误:收集已被修改;枚举操作可能无法执行,如何在列表框上设置所选索引?
本文关键字:列表 执行 索引 设置 取错误 修改 操作 枚举 获取 | 更新日期: 2023-09-27 17:52:12
我有以下代码来选择列表框中的下一个列表项或第一个列表项:
if (ListBox.SelectedIndex == lst.Count - 1)
ListBox.SelectedIndex = 0;
else
this.ListBox.SelectedIndex = ListBox.SelectedIndex + 1;
抛出异常:
Collection was modified; enumeration operation may not execute
修改集合的原因是我需要修改其中一个列表项的内容。我找到需要修改的列表项,在该索引处删除它,并在同一索引处重新添加它。
是否有办法修改列表框的内容,仍然能够设置SelectedIndex?
这可能取决于执行的顺序以及何时读取和写入属性。
试题:
var idx = ListBox.SelectedIndex;
if (idx == lst.Count - 1)
ListBox.SelectedIndex = 0;
else
this.ListBox.SelectedIndex = idx + 1;
尝试如下:
var index=ListBox.SelectedIndex;
if (index == lst.Count - 1)
ListBox.SelectedIndex = 0;
else
this.ListBox.SelectedIndex = index + 1;