【问题标题】:Populating a TreeView from a TreeView Instance从 TreeView 实例填充 TreeView
【发布时间】:2010-09-13 20:08:47
【问题描述】:

我有一堂课,我们叫 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 不是空的,实际上有一些东西,但由于某种原因它没有显示任何东西。

任何帮助将不胜感激,

谢谢

【问题讨论】:

    标签: vb.net treeview


    【解决方案1】:

    第一个 sn-p 无法工作,因为 aTreeView 是对存储在表单的 Controls 集合中的 TreeView 的引用。赋值只是改变了引用,并没有改变用户正在查看的实际 TreeView。

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

    【讨论】:

      【解决方案2】:

      感谢 Hans Passant 的回答,这就是让它工作的方法......

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

      【讨论】:

        猜你喜欢
        • 2012-12-09
        • 2017-05-25
        • 2017-06-05
        • 2010-10-22
        • 1970-01-01
        • 2010-09-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多