以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]一个treeview的所有节点复制成另一个treeview的一个子节点  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=90833)

--  作者:小美菜
--  发布时间:2016/9/22 15:33:00
--  [求助]一个treeview的所有节点复制成另一个treeview的一个子节点
一个treeview的所有节点复制成另一个treeview的一个子节点,能实现吗?
--  作者:有点蓝
--  发布时间:2016/9/22 15:38:00
--  
不明白所有怎么变成一个,截图说明效果
--  作者:小美菜
--  发布时间:2016/9/22 15:57:00
--  
怎么没有图
--  作者:小美菜
--  发布时间:2016/9/22 16:08:00
--  
限定我上传图片了?
--  作者:小美菜
--  发布时间:2016/9/22 16:16:00
--  
是成为另外一个TREEVIEW子节点的一部分
--  作者:小美菜
--  发布时间:2016/9/22 16:22:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:ggg1.png
图片点击可在新窗口打开查看

--  作者:狐狸爸爸
--  发布时间:2016/9/22 16:23:00
--  
这是一个目录树的节点整体复制到另一个目录树:

Dim trv1 As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim trv2 As WinForm.TreeView = e.Form.Controls("TreeView2")
Dim nodes As new Dictionary(of String ,Winform.TreeNode)
For Each nd As WinForm.TreeNode In trv1.allNodes
    If nd.Level = 0 Then
        nodes.add(nd.name, trv2.Nodes.Add(nd.fullname,nd.text,nd.IconFile))
    Else
        Dim pm As String = nd.FullName.SubString(0,nd.FullName.LastIndexOf("\\"))
        nodes.add(nd.fullname ,nodes(pm).nodes.Add(nd.name,nd.text,nd.IconFile))
    End If
Next

你改一行代码,就可以复制到对应的节点
[此贴子已经被作者于2016/9/22 16:25:17编辑过]

--  作者:小美菜
--  发布时间:2016/9/22 16:47:00
--  
这个是完整复制,好像,我要复制在第二个treeview的某个节点下
--  作者:狐狸爸爸
--  发布时间:2016/9/22 16:51:00
--  

Dim trv1 As WinForm.TreeView = e.Form.Controls("TreeView1")
Dim trv2 As WinForm.TreeView = e.Form.Controls("TreeView2")
Dim nodes As new Dictionary(of String ,Winform.TreeNode)
Dim pd As WinForm.TreeNode = 目标节点
For Each nd As WinForm.TreeNode In trv1.allNodes
    If nd.Level = 0 Then
        nodes.add(nd.name, pd.Nodes.Add(nd.fullname,nd.text,nd.IconFile))
    Else
        Dim pm As String = nd.FullName.SubString(0,nd.FullName.LastIndexOf("\\"))
        nodes.add(nd.fullname ,nodes(pm).nodes.Add(nd.name,nd.text,nd.IconFile))
    End If
Next


--  作者:小美菜
--  发布时间:2016/9/22 20:25:00
--  

谢谢,狐狸爸爸!根据指点,在全局做的

Public Sub CopyTreeToTreeNode(byval SorcTrv As  WinForm.TreeView,byval  DestTrv As  WinForm.TreeView,Optional byval TrvNodeName As String ="" ,Optional byval TrvLevel As Integer=1,Optional byval TrvClear As  Boolean=True)
 \'Dim SorcTrv As WinForm.TreeView = e.Form.Controls("TreeView1")
 \'Dim DestTrv As WinForm.TreeView = e.Form.Controls("TreeView2")
  Dim nodes As new Dictionary(of String ,Winform.TreeNode)
  Dim pd As WinForm.TreeNode
  For Each pd In DestTrv.allNodes
     If pd.Level = TrvLevel AndAlso pd.Name=TrvNodeName Then Exit For
     PD=Nothing
  Next
  If PD IsNot Nothing Then
     If TrvClear Then PD.Nodes.Clear
     For Each nd As WinForm.TreeNode In SorcTrv.allNodes
       If nd.Level = 0 Then \'AndAlso nd.Name= TrvNodeName Then
         nodes.add(nd.name, PD.nodes.Add(nd.FullName,nd.text,nd.IconFile))
       Else
         Dim pm As String = nd.FullName.SubString(0,nd.FullName.LastIndexOf("\\"))
         nodes.add(nd.fullname ,nodes(pm).nodes.Add(nd.name,nd.text,nd.IconFile))
      End If
    Next
  End If
\' 你改一行代码,就可以复制到对应的节点
End Sub

引用后产生结果如下,是我要的


此主题相关图片如下:无标题.png
按此在新窗口浏览图片