gpt4 book ai didi

c# - 如何保持更新的对象列表框?

转载 作者:行者123 更新时间:2023-11-30 22:42:48 25 4
gpt4 key购买 nike

我在使用子对象更新 ListBox 时遇到问题。

我正在使用两个 List,total 和 current,以及一个 Timer;每 1000 毫秒查询当前的子对象集,并将其附加到我的总列表中。然后,我的当前列表仅包含当前项目(阅读,而不是总数)。

然后我将比较总列表和当前列表。删除总列表中未在当前列表中找到的任何对象,然后将总列表中的每个对象添加到 ListBox。

private List<IAgStkObject> _liveListOfEntities;
private List<IAgStkObject> _totalListOfEntities = new List<IAgStkObject>();

private void UpdateEntityList() {
IAgStkObjectElementCollection stkScenarioEntities;

if (_stkObjectRoot.HasChildren) {
_liveListOfEntities = new List<IAgStkObject>();

foreach (AgESTKObjectType typeOfElement
in Enum.GetValues(typeof(AgESTKObjectType))) {
stkScenarioEntities =
_stkObjectRoot.CurrentScenario.Children.GetElements(typeOfElement);

foreach (IAgStkObject entity in stkScenarioEntities) {
_liveListOfEntities.Add(entity);

if (!_totalListOfEntities.Contains(entity)) {
_totalListOfEntities.Add(entity);
}
}
}

foreach (IAgStkObject entity in _totalListOfEntities) {
if (!_liveListOfEntities.Contains(entity)) {
// remove
_totalListOfEntities.Remove(entity);
}
else if (!lsbEntities.Items.Contains(entity.InstanceName)) {
lsbEntities.Items.Add(entity.InstanceName);
}
}
}

当删除任何对象时,我总是收到异常:Collection was modified;枚举操作可能无法执行。

最佳答案

您不应该在迭代过程中从集合中删除项目。相反,您应该创建一个临时的 List<>存储对您确定必须删除的项目的引用,然后在使用迭代器的代码之外的代码中删除它们。

关于c# - 如何保持更新的对象列表框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4221670/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com