从TreeView实例填充TreeView

时间:2010-09-13 20:08:47

标签: vb.net treeview

我有一个课,我们打电话给MyClass。 在这个类中,我有一个TreeView属性让我们调用myTreeView 在我的代码中,我填充了此TreeView的节点,以便稍后可以使用它。 然后,当实际使用它时,我无法从myClass中获取所有节点并将它们放在我的表单上的树视图控件中。

我尝试了两件事:

1

aTreeView=MyClass.myTreeView

只返回任何内容(TreeView为空)

2

    For Each newNode As TreeNode In MyClass.myTreeView.Nodes
        aTreeView.Nodes.Add(newNode)
    Next

我在这里得到了相同的结果......一个空的TreeView

奇怪的是,在调试时,MyClass中的TreeView很好地填充了正确的值,并且在循环中,newNode不是空的,实际上有些东西但由于某种原因它没有显示任何东西。

任何帮助将不胜感激,

由于

2 个答案:

答案 0 :(得分:2)

第一个代码段无法工作,因为aTreeView是对TreeView的引用,该TreeView存储在表单的Controls集合中。赋值只是更改引用,它不会更改用户正在查看的实际TreeView。

第二个代码段存在缺陷,因为TreeNode拥有所有者。 TreeView。代码将清空类中的TreeView。移动的节点可能不可见,因为您使用了错误的引用,可能是错误的表单实例。请务必使用用户正在查看的那个。您需要使用TreeNode.Clone()方法来创建节点的副本。

答案 1 :(得分:1)

感谢Hans Passant的回答,这就是如何让它发挥作用......

For Each newNode As TreeNode In MyClass.myTreeView.Nodes 
    Dim cloneNode as new TreeNode
    cloneNode=newNode.Clone()
    aTreeView.Nodes.Add(cloneNode) 
Next