На этот вопрос уже есть ответ здесь:
Похоже, что для удаления 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 из дерева?