Ваша проблема вызвана тем, что дочерние узлы любого данного узла хранятся в myNode.Nodes
. Таким образом, когда вы удаляете узел, все его узлы также освобождаются, поэтому вам придется сначала перебрать дочерние узлы, переместить их, а затем удалить исходный узел:
//assume treeChild is what you are removing, and treeControl is you TreeView
//this code will move all of its children nodes
//to be children of its parent before being removed
//set that we are updating the treeview control
//increases performance by blocking the paint methods until update is finished
treeControl.BeginUpdate();
//this will loop through child nodes of what we are removing
//then add them to the parent
foreach(TreeView node in treeChild.ChildNodes)
{
node.Parent.Nodes.Add(node);
}
//then remove the node
treeChild.Remove();
treeControl.EndUpdate(); //note that we finished updated the controls