Public Class Form1
Dim tNode(6) As TreeNode
Private Sub initialTree(ByVal tv As TreeView)
tv.Nodes.Clear()
Call totalNodes()
tv.Nodes.Add(tNode(0))
tv.Nodes(0).Nodes.Add(tNode(1))
tv.Nodes(0).Nodes.Add(tNode(2))
tv.Nodes(0).Nodes.Add(tNode(3))
tv.Nodes(0).Nodes(1).Nodes.Add(tNode(4))
tv.Nodes(0).Nodes(1).Nodes.Add(tNode(5))
tv.Nodes(0).Nodes(0).Nodes.Add(tNode(6))
End Sub
Private Sub totalNodes()
Dim i As Integer
For i = 0 To 6
tNode(i) = New TreeNode
tNode(i).Name = "Node" + i.ToString
tNode(i).Text = "Node" + i.ToString
Next
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Call initialTree(TreeView1)
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' State 1
SetHighPressureNode(TreeView1, TreeView2, GetNodeByKey("Node1", TreeView1), GetNodeByKey("Node0", TreeView1))
'State 2
'SetHighPressureNode(TreeView1, TreeView2, GetNodeByKey("Node2", TreeView1), GetNodeByKey("Node0", TreeView1))
End Sub
Private Sub SetHighPressureNode(ByVal tvOriginalTree As TreeView, ByVal tvWorkingTree As TreeView, ByVal tvnHighPressureNode As TreeNode, ByVal tvnLowPressureNode As TreeNode)
Dim tvnHighClone As TreeNode
Dim tvnLowClone As TreeNode
Dim tvnNewHigh As TreeNode
Dim strOldName As String
tvWorkingTree.Nodes.Clear() ' Clear working tree nodes
tvnHighClone = tvnHighPressureNode.Clone ' Copy high pressure node
tvnLowClone = tvnLowPressureNode.Clone ' Copy low pressure node
tvWorkingTree.Nodes.Add(tvnHighClone) ' Add copied high pressure node to the working tree root
tvnNewHigh = GetNodeByKey(tvnHighClone.Name, tvWorkingTree)
strOldName = tvnHighClone.Name ' Store name
tvnNewHigh.Name = "blabla-blabla" ' Chenge name in order to not find it
tvnNewHigh.Nodes.Insert(0, tvnLowClone)
GetNodeByKey(strOldName, tvWorkingTree).Remove() ' Remove tvnHighPressureNode from its original place.
tvnNewHigh.Name = strOldName 'Restore original name.
End Sub
Private Function GetNodeByKey(ByVal strKey As String, ByVal tvTree As TreeView) As TreeNode
Dim aFindResult As TreeNode() = tvTree.Nodes.Find(strKey, True)
Dim tvnRet As TreeNode = Nothing
For j As Integer = 0 To aFindResult.Length - 1
If aFindResult(j).Name = strKey Then
tvnRet = aFindResult(j)
Exit For
End If
Next
Return tvnRet
End Function
End Class