vb6中treeview+msxml3的节点问题 :
---------------------
实现添加,删除操作,结果储存在xml中
问题
1>  有无其它方式做treeview的节点问题,实现添加,保存,删除
2>  先帮忙请看这段代码
实现添加,删除节点操作,以下是xml保存情况(test)
<NODES>
<NODE Caption="tw" Key="pp" Tag="" ParentKey=""/>
<NODE Caption="soft" Key="child01" Tag="" ParentKey="pp"/>
<NODE Caption="word" Key="child02" Tag="" ParentKey="pp"/>
<NODE Caption="tw1" Key="tw1" Tag="" ParentKey=""/>
<NODE Caption="1001" Key="child3" Tag="" ParentKey="pp1"/>
<NODE Caption="1002" Key="child4" Tag="" ParentKey="pp1"/>
<NODE Caption="1003" Key="child6" Tag="" ParentKey="pp1"/>
<NODE Caption="1004" Key="child7" Tag="" ParentKey="pp1"/>
<NODE Caption="tw2" Key="tw2" Tag="" ParentKey=""/>
<NODE Caption="2001" Key="child8" Tag="" ParentKey="pp2"/>
<NODE Caption="2002" Key="child10" Tag="" ParentKey="pp2"/>
<NODE Caption="2003" Key="child11" Tag="" ParentKey="pp2"/>
<NODE Caption="2004" Key="child12" Tag="" ParentKey="pp2"/>
</NODES> 
-----------------------
删除节点后,重新读取xml为:
<NODES>
<NODE Caption="tw" Key="pp" Tag="" ParentKey=""/>
<NODE Caption="soft" Key="child01" Tag="" ParentKey="pp"/>
<NODE Caption="word" Key="child02" Tag="" ParentKey="pp"/>
<NODE Caption="tw1" Key="tw1" Tag="" ParentKey=""/>
<NODE Caption="1001" Key="child3" Tag="" ParentKey="pp1"/><NODE Caption="1003" Key="child6" Tag="" ParentKey="pp1"/>
<NODE Caption="1004" Key="child7" Tag="" ParentKey="pp1"/>
<NODE Caption="tw2" Key="tw2" Tag="" ParentKey=""/>
<NODE Caption="2001" Key="child8" Tag="" ParentKey="pp2"/>
<NODE Caption="2002" Key="child10" Tag="" ParentKey="pp2"/>
<NODE Caption="2003" Key="child11" Tag="" ParentKey="pp2"/>
<NODE Caption="2004" Key="child12" Tag="" ParentKey="pp2"/>
</NODES> 
---------------------------------
以下是添加command的代码:
Private Sub Command1_Click()
  If Txt0.Text <> "" And Txt1.Text <> "" Then '不允许建立零字节的父节点和子节点
    CunZai = False
    J = SmartTreeView.Nodes.Count
    For I = 1 To SmartTreeView.Nodes.Count '检查新输入的父节点名称是否存在
        'If SmartTreeView.SelectedItem.children > 1 Then
        If Txt0.Text = SmartTreeView.Nodes(I).Text Then CunZai = True
        'End If
    Next I
    If CunZai = True Then '若存在, 则在父节点下建立子节点
       
      Set nodx = SmartTreeView.Nodes.Add(Txt0.Text, tvwChild, "child" & J, Txt1.Text, 3)
    Else '若不存在,则建立父节点和子节点
    
      Set nodx = SmartTreeView.Nodes.Add(, , Txt0.Text, Txt0.Text, 1)
      Set nodx = SmartTreeView.Nodes.Add(Txt0.Text, tvwChild, "child" & J, Txt1.Text, 3)
    End If
    SmartTreeView.Refresh
  ElseIf Txt0.Text = "" Then MsgBox "请输入父节点名称!", vbInformation, "警告!"
   '系统提示
  ElseIf Txt1.Text = "" Then MsgBox "请输入子节点名称!", vbInformation, "警告!"
  End If
End Sub问题:
当comamnd删除中间一子节点,则不能添加子节点(为什么),比如删除的节点为
<NODE Caption="1002" Key="child4" Tag="" ParentKey="pp1"/>
当comamnd删除最末一子节点,则添加,删除情况正常。同样父节点也出现这个问题,为什么?
----------------------
请指点,小弟谢过。

解决方案 »

  1.   

    情况是,删了child1到child10(比如)中任何一个节点,当父节点存在,在建立一个子节点,就报Set nodx = SmartTreeView.Nodes.Add(Txt0.Text, tvwChild, "child" & J, Txt1.Text, 3)  这句错误。
    -------------
    想不通,请各位帮帮小弟,提醒下怎么回事?多谢,多谢了,已经发了两贴了。
      

  2.   

    报错是key 不唯一。 要怎么解决?谢谢
      

  3.   

    让key唯一,只要做个计数器,如J在添加一个节点后就加一