在TreeNode中插入现有的TreeNodeCollection

时间:2013-05-10 17:56:00

标签: vb.net insert treeview treenode treenodecollection

问题:

在下面的屏幕截图中,我有一个节点300-9885-00X及其TreeNodeCollection(在红色方块中)。稍微低一点,我们再次找到300-9885-00X,我想将之前找到的TreeNodeCollection插入到该节点中......

TreeView Nodes


背景资料

我有一个遍历AutoCAD / SolidEdge程序集的递归程序。它打开文档并打印程序集及其子项,等等(递归地)......

  • 绿色表示打印
  • 橙色表示之前已经打印过,所以我们不需要再次打印......

问题:

我们如何将现有TreeNodeCollection 插入 TreeNode

可知:

  1. TreeNodeCollection的位置
  2. 我想在其中插入集合的节点的位置
  3. 以下变量TreeNodes包含我的集合。我必须循环遍历集合才能添加其文本吗? TreeCollectionAdd Error

2 个答案:

答案 0 :(得分:0)

您无法向节点添加TreeNodeCollection。您必须循环通过TreeNodeCollection并单独添加节点,如下所示:

For j As Integer = 0 To TreeNodes.Count - 1
    n.Nodes.Add(TreeNodes(j).Clone())
Next

注意我使用了.Clone()。这是由于插入了现有节点。您不能这样做,您必须删除现有的或克隆它。在我的情况下,我不得不克隆它。

答案 1 :(得分:0)

// Get the '_NodesCollection' from the '_parentNode' TreeNode.
TreeNodeCollection _Nodes = _parentNode.FirstNode.Nodes;

// Create an array of 'TreeNodes'.
TreeNode[] Nodes = new TreeNode[_Nodes.Count];

// Copy the tree nodes to the 'Nodes' array.
_Nodes.CopyTo(Nodes, 0);

// Remove the First Node & Children from the ParentNode.
_parentNode.Nodes.Remove(_parentNode.FirstNode);

// Remove all the tree nodes from the '_parentNode' TreeView.
_parentNode.Nodes.Clear();

// Add the 'Nodes' Array to the '_parentNode' ParentNode.
_parentNode.Nodes.AddRange(Nodes);

// Add the Child Nodes to the TreeView Control
TvMap.Nodes.Add(_parentNode);