我有一个课,我们打电话给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不是空的,实际上有些东西但由于某种原因它没有显示任何东西。
任何帮助将不胜感激,
由于
答案 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