代码之家  ›  专栏  ›  技术社区  ›  Iggy

从树视图实例填充树视图

  •  0
  • Iggy  · 技术社区  · 15 年前

    在我的代码中,我填充了这个树视图的节点,以便以后可以使用它。 然后,到了实际使用它的时候,我还不能从myClass中获取所有节点并将它们放在窗体的树视图控件中。

    aTreeView=MyClass.myTreeView
    

    它什么也不返回(TreeView是空的)

    2

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

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

    谢谢

    2 回复  |  直到 15 年前
        1
  •  2
  •   Hans Passant    15 年前

    第一个代码段无法工作,因为aTreeView是对存储在窗体控件集合中的树视图的引用。分配只是更改引用,并不会更改用户正在查看的实际树视图。

    第二个片段有缺陷,因为TreeNode有一个所有者。树景。代码将清空类中的树视图。移动的节点可能不可见,因为您使用了错误的引用,可能是错误的窗体实例。一定要使用用户正在看的那个。你需要使用树节点克隆()方法创建节点的副本。

        2
  •  1
  •   Iggy    15 年前

    多亏了汉斯·帕桑的回答,这就是如何让它工作。。。

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