vb6 treeview控件中如何在选中地点处添加子节点 100

PrivateSubcmd1_Click()IfNewFormlng-1=0ThenElseNewS=n(NewFormlng-1).TV1.SelectedItem.I... Private Sub cmd1_Click()
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选中的节点的下一层

如果这个效果做出来的话,我就还可以做复制粘贴的功能了.但研究了很久上面怎么改也不是我想要的效果!
做出来是这个效果

求哪位封装成函数贴上来吧
展开
 我来答
中海宏洋
2013-07-16 · 超过12用户采纳过TA的回答
知道答主
回答量:41
采纳率:0%
帮助的人:34.9万
展开全部
假定LV1 是BOM表,LV2 是我们复制(即选择)的对象,那么处理步骤如下:
1、通过listview属性可以获得LV2当前被选择节点的属性(text\tag\key,一般使用key,可以考虑3个值都传回来)
2、通过listview属性可以获得LV1的被选择节点的属性,同理
3、通过存储过程或者代码去做递归,将LV2的节点以及节点的所有子节点内容写入数据库
4、重新获取LV1当前节点在数据库里的属性,重新加载该节点下的内容,不需要刷新整个LV1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
寒信HK
2013-07-16 · TA获得超过1876个赞
知道大有可为答主
回答量:1326
采纳率:92%
帮助的人:377万
展开全部
tv1是目标,tv2是你要添加的,如果在不同的窗体,请自行修改代码.。代码如下

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

例子拿去试试吧



本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式