private void RestoreToNetworkHierarchyTreeView(NetworkAddress address, NodeView node) { TreeNode parent = networkHierarchyTreeView.Nodes[address.GetId(0) - 1]; var nodes = parent.Nodes; var currentAddress = new NetworkAddress(address.GetId(0)); for (var i = 1; i < address.Levels - 1; i++) { var id = address.GetId(i); var subnetworkNode = new TreeNode(); currentAddress = currentAddress.Append(id); subnetworkNode.Text = currentAddress.ToString(); subnetworkNode.Name = currentAddress.ToString(); subnetworkNode.Tag = new HierarchicalPathComputationServer(currentAddress, "127.0.0.1", Settings.Default.SignallingCloudListeningPort); if (!nodes.ContainsKey(subnetworkNode.Name)) { nodes.Add(subnetworkNode); parent = subnetworkNode; nodes = parent.Nodes; } else { parent = nodes[subnetworkNode.Name]; nodes = parent.Nodes; } } var treeNode = new TreeNode { Tag = node, Text = address.ToString(), Name = address.ToString() }; if (!nodes.ContainsKey(treeNode.Name)) { nodes.Add(treeNode); } else { nodes[treeNode.Name].Tag = treeNode.Tag; } }