Изменена коллекция; операция перечисления может не выполняться. Treenode Remove [дубликат]

На этот вопрос уже есть ответ здесь:

Похоже, что для удаления TreeNode мне нужно перейти к его родителю, поэтому я сделал это ниже только для того, чтобы обнаружить, что исходная коллекция была изменена, хотя это был экземпляр. Ниже приведен код, и tvRightTreeпредставляет собой интересующий TreeView

TreeNodeCollection checkedNodeCollection = tvRightTree.CheckedNodes;
foreach (TreeNode checkedNode in checkedNodeCollection) {
  //if the to be removed node is parent then remove through treeview
  if (checkedNode.Parent != null) {
    //compiler does not allow modifying a collection that we iterate
    //hence resort to finding the parent and then remove
    TreeNode targetParent = tvRightTree.FindNode(checkedNode.Parent.ValuePath);
    targetParent.ChildNodes.Remove(checkedNode);
  } else
    tvRightTree.Nodes.Remove(checkedNode);
  }

Как правильно удалить проверенные узлы TreeNodes из дерева?

0
задан dda 6 June 2013 в 06:39
поделиться