获取错误:收集已被修改;枚举操作可能无法执行,如何在列表框上设置所选索引?

本文关键字:列表 执行 索引 设置 取错误 修改 操作 枚举 获取 | 更新日期: 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;