我在使用子對象更新ListBox時遇到問題。如何保持對象的更新列表框?
我使用了兩個List
s,總數和當前值,以及一個Timer;每1000毫秒查詢當前的一組子對象,並附加到我的總列表中。我的當前列表然後僅用當前項目實例化(讀取而非總數)。
我然後比較總列表和當前列表。總列表中沒有找到當前列表中的任何對象都將被刪除,隨後將列表中的每個對象添加到列表框中。
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; enumeration operation may not execute.
在很多情況下,'List .RemoveAll(...)'可以實現這一點。 –
CodesInChaos
2010-11-21 23:37:37
+1爲我完成我的答案:) – 2010-11-22 03:37:34