'本实例要在窗体上添加一个TreeView1,两个CommandPrivate Sub Command1_Click() Call addnodex("key1", "key1") Call Expanded End SubPrivate Sub Command2_Click() Call addnodex("key2", "key2") Call Expanded End SubPrivate Sub Form_Load() TreeView1.Nodes.Add , , "R", "root" TreeView1.Nodes.Add "R", tvwChild, "key1", "key1" Call Expanded End SubSub addnodex(NodeKey As String, NodeText As String) Dim blnExist As Boolean For i = 1 To TreeView1.Nodes.Count If TreeView1.Nodes(i).Key = NodeKey Then blnExist = True Exit For End If Next If blnExist Then '存在 TreeView1.Nodes.Add TreeView1.Nodes(i).Key, tvwChild, "", NodeText Else '不存在 TreeView1.Nodes.Add "R", tvwChild, NodeKey, NodeText End If End SubSub Expanded() For i = 1 To TreeView1.Nodes.Count TreeView1.Nodes(i).Expanded = True Next End Sub
'本实例要在窗体上添加一个TreeView1,两个CommandPrivate Sub Command1_Click()
Call addnodex("key1", "key1")
Call Expanded
End SubPrivate Sub Command2_Click()
Call addnodex("key2", "key2")
Call Expanded
End SubPrivate Sub Form_Load()
TreeView1.Nodes.Add , , "R", "root"
TreeView1.Nodes.Add "R", tvwChild, "key1", "key1"
Call Expanded
End SubSub addnodex(NodeKey As String, NodeText As String)
Dim blnExist As Boolean
For i = 1 To TreeView1.Nodes.Count
If TreeView1.Nodes(i).Key = NodeKey Then
blnExist = True
Exit For
End If
Next
If blnExist Then '存在
TreeView1.Nodes.Add TreeView1.Nodes(i).Key, tvwChild, "", NodeText
Else '不存在
TreeView1.Nodes.Add "R", tvwChild, NodeKey, NodeText
End If
End SubSub Expanded()
For i = 1 To TreeView1.Nodes.Count
TreeView1.Nodes(i).Expanded = True
Next
End Sub
即:允许不同的父节点有同名的字节点。而上面的程序好像在整个treeview中都不能有相同的字节点。
程序主要通过KEY判断是否存在节点
Call addnodex("key" & Rnd(Val(Now())), "aaa")
Call addnodex("key" & Rnd(Val(Now())), "aaa")
Call addnodex("key" & Rnd(Val(Now())), "aaa")
Call Expanded
End Sub
Call addnodex("key" & Rnd(Val(Now())), "aaa")
Call addnodex("key" & Rnd(Val(Now())), "aaa")
Call addnodex("key" & Rnd(Val(Now())), "aaa")
Call Expanded
End Sub
从数据表里读出所有记录(每条记录对应一条路径信息,不同记录之间可能有部分相同的信息,例如第一记录是:1\2\3\4,第二条记录是:1\2\9,……),然后根据这些信息生成treeview中的各个节点
请问高手有什么最佳实现方法没有?我现在想到的方法是先用split函数分解路径字符串,然后从函数返回的数组中取出各级目录,再逐个生成节点。但是这样要不断的检查treeview中是否已经生成了相应的节点,觉得实现起来不容易。望高手指点,谢谢。