Serialcoder en Français Serialcoder in English
TEL : +33 (0)9 72 13 15 17

Windows Forms FAQ resources

24. Windows Forms TreeView

24.9 How can I clone/copy all the nodes from one TreeView Control to another?


The following code snippet demonstrates how you can clone or copy all the nodes in TreeView1 to TreeView2 by clicking on Button1.

[C#]
private void IterateTreeNodes (TreeNode originalNode, TreeNode rootNode)
     {
          foreach( TreeNode childNode in originalNode.Nodes)
          {
                    
               TreeNode newNode = new TreeNode(childNode.Text);          
               newNode.Tag = childNode.Tag;
               this.treeView2.SelectedNode = rootNode;
               this.treeView2.SelectedNode.Nodes.Add(newNode);
               IterateTreeNodes(childNode, newNode);
          }
     }

//Button Click code
private void button1_Click(object sender, System.EventArgs e)
     {
          foreach( TreeNode originalNode in this.treeView1.Nodes)
          {
               TreeNode newNode = new TreeNode(originalNode.Text);
               newNode.Tag = originalNode.Tag;
               this.treeView2.Nodes.Add(newNode);
               IterateTreeNodes(originalNode, newNode);
          }
     }

[VB.NET]
Private Sub IterateTreeNodes(ByVal originalNode As TreeNode, ByVal rootNode As TreeNode)
          Dim childNode As TreeNode
          For Each childNode In originalNode.Nodes

               Dim NewNode As TreeNode = New TreeNode(childNode.Text)
               NewNode.Tag = childNode.Tag
               Me.treeView2.SelectedNode = rootNode
               Me.treeView2.SelectedNode.Nodes.Add(NewNode)
               IterateTreeNodes(childNode, NewNode)
          Next
End Sub

'Button Click code
Private Sub button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)
          Dim originalNode As TreeNode
          For Each originalNode In Me.treeView1.Nodes
               Dim NewNode As TreeNode = New TreeNode(originalNode.Text)
               NewNode.Tag = originalNode.Tag
               Me.treeView2.Nodes.Add(NewNode)
               IterateTreeNodes(originalNode, NewNode)
          Next
End Sub