How to reorder treenodes

I would like to reorder System.Windows.Forms.TreeNodes at the same level.

any suggestions on how this can be done in .net-2.0.

+4
source share
4 answers
void MoveNodeUp(TreeNode node) { TreeNode parentNode = node.Parent; int originalIndex = node.Index; if (node.Index == 0) return; TreeNode ClonedNode = (TreeNode)node.Clone(); node.Remove(); parentNode.Nodes.Insert(originalIndex - 1, ClonedNode); parentNode.TreeView.SelectedNode = ClonedNode; } 
+1
source

You need to manipulate the collection of TreeView nodes. See TreeNodeCollection .

If you have three tree nodes and you want to move the latter to the foreground, for example: (Note: not tested code, but shows an idea)

 var lastNode = MyTreeView.Nodes[2]; MyTreeView.Nodes.Remove(lastNode); MyTreeView.Nodes.Insert(0, lastNode); 
+4
source

What I wrote:

  public void MoveNode(TreeView tv, TreeNode node, bool up) { if ((node.PrevNode == null) && up) { return; } if ((node.NextNode == null) && !up) { return; } int newIndex = up ? node.Index - 1 : node.Index + 1; var nodes = tv.Nodes; if (node.Parent != null) { nodes = node.Parent.Nodes; } nodes.Remove(node); nodes.Insert(newIndex, node); } 
+1
source

I wrote this code that does not require cloning.

In my case, it moves one position in the nodes of the sister, but can be adapted

  TreeNode selectedNode = treeViewChain.SelectedNode; if (selectedNode != null && selectedNode.Index > 0) { TreeNode parent = selectedNode.Parent; int selectedIndex = selectedNode.Index; selectedNode.Remove(); parent.Nodes.Insert(selectedIndex - 1, selectedNode); treeViewChain.SelectedNode = selectedNode; } 
0
source

All Articles