我有一个函数可以检查对象列表以查看它们是否已被单击并相应地触发 OnClick 事件。我相信该功能工作正常,但我遇到了问题:
当我连接到其中一个 OnClick 事件并将该元素删除并插入到列表中的不同位置(此程序的典型功能)时,我收到“集合已修改...”错误。
我相信我明白发生了什么:
- 该函数循环遍历每个对象,必要时触发 OnClick 事件
- 一个事件被触发,对象根据钩子(Hook)函数改变列表中的位置
- 在遍历集合时修改集合抛出异常
我的问题是,如何让函数遍历所有对象,在适当的时间触发必要的事件,并仍然为用户提供操纵对象在列表中的位置的选项?
最佳答案
这类问题一般有两种解决方法:
- 复印一份 list 。遍历副本。
- 列出需要进行的更改。完成迭代后应用更改。
如果您想将进行更改的代码与进行循环的代码分离,“使用索引”选项听起来不太合适。
关于c# - "Collection was modified..."问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2901749/