vb6 treeview控件中如何在选中地点处添加子节点 100
If NewFormlng - 1 = 0 Then
Else
NewS = n(NewFormlng - 1).TV1.SelectedItem.Index
NewN = n(NewFormlng - 1).TV1.Nodes.Count
For i = 1 To TV1.Nodes.Count
ViewAdd n(NewFormlng - 1).TV1, "a" & NewN + i, TV1.Nodes(i).Text, NewS + i, tvwChild
Next
End Sub
Public Static Function ViewAdd(ByVal ViewCtl, ByVal Key As Variant, Optional ByVal Text As Variant, Optional ByVal Relative As Variant, Optional ByVal Relationship As Variant, Optional ByVal Image As Variant, Optional ByVal SelectedImage As Variant) As Variant
On Error Resume Next
ViewCtl.Nodes.Add Relative, tvwChild, Key, Text, Image, SelectedImage
End Function
我本意是想按下按钮后把form2的tv全部选项添加到form1选中的节点的下一层
如果这个效果做出来的话,我就还可以做复制粘贴的功能了.但研究了很久上面怎么改也不是我想要的效果!
做出来是这个效果
求哪位封装成函数贴上来吧 展开
1、通过listview属性可以获得LV2当前被选择节点的属性(text\tag\key,一般使用key,可以考虑3个值都传回来)
2、通过listview属性可以获得LV1的被选择节点的属性,同理
3、通过存储过程或者代码去做递归,将LV2的节点以及节点的所有子节点内容写入数据库
4、重新获取LV1当前节点在数据库里的属性,重新加载该节点下的内容,不需要刷新整个LV1
Private Sub Command1_Click()
For i = 1 To TV2.Nodes.Count
TV1.Nodes.Add TV1.SelectedItem.Key, tvwChild, TV1.SelectedItem.Key & "_" & TV2.Nodes(i).Key, TV1.SelectedItem.Text & "_" & TV2.Nodes(i).Text, 0, 0
Next
End Sub
没看出你的程序问题在哪,要注意的是节点text属性可以有重复的,但是key属性是不能有重复的,所以key的选择一定要有规律,我这里采用的是选定节点的key加上原节点的key做为新增节点的key,这样就可以确保key不会出错了。
看图,我之前也做成了你这样效果,但是不理想, t2如果有子节点.你上面的代码也全白搭
还没有解决吗?下面代码经测试有效
Private Sub Command1_Click()
Dim i As Integer
For i = 1 To Tv2.Nodes.Count
If Tv2.Nodes(i).Parent Is Nothing Then
Tv1.Nodes.Add Tv1.SelectedItem.Key, tvwChild, Tv1.SelectedItem.Key & "_" & Tv2.Nodes(i).Key, Tv1.SelectedItem.Text & "_" & Tv2.Nodes(i).Text, 0, 0
Else
Tv1.Nodes.Add Tv1.SelectedItem.Key & "_" & Tv2.Nodes(i).Parent.Key, tvwChild, Tv1.SelectedItem.Key & "_" & Tv2.Nodes(i).Key, Tv1.SelectedItem.Text & "_" & Tv2.Nodes(i).Text, 0, 0
End If
Next
End Sub
例子拿去试试吧