VB 6树视图和节点
我在一个表单上有一个treeview控件,该控件填充了许多父分支。每个父分支都包含许多子分支和孙子分支。每个节点都有一个复选框,用户可以选中或取消选中。我想做的是隐藏未选中的主父分支,从而隐藏它们下面的所有分支。相反,如果未选中任何内容,则所有分支都应可见(或启用)我一直在考虑获取一个对我要从树中删除的所有根节点的引用,并将它们存储在一个集合中。然后,我可以使用该集合用“隐藏”的树枝重新填充树
Dim i As Long, upper As Long
Dim rootNodes As New Collection
Dim myNode As MSComctlLib.Node
upper = tvHoles.Nodes.Count
For i = 1 To upper
Set myNode = tvHoles.Nodes.Item(i)
If myNode.Tag = "Root" Then
rootNodes.Add myNode
End If
Next
If rootNodes.Count > 0 Then
Set myNode = rootNodes.Item(1)
tvHoles.Nodes.Remove myNode.Index
msgbox myNode.tag
End If
上面的代码片段成功地获取了对树视图中第一个根节点的引用,然后将其从树视图中删除。myNode对象似乎保留了对其在树中时拥有的所有内容的引用,包括其子对象。我似乎无法找到将myNode对象添加回树的方法。如果您能帮助实现此功能,甚至只是禁用节点,我们将不胜感激。
**** Hidden Message ***** 不要担心这个...我决定放弃树景。事实证明,需要进行的更改使用户对treeview控件感到困惑。所以我选了几个盒子。 为了将来参考,我遇到了和你完全一样的问题,这是我的解决方案。(我直接从我的应用程序中复制了它,所以你必须通过并取出你不需要的东西,才能让它工作)
哦,是的,这里的关键是我使用了两个树视图。其中一个是未过滤的版本(其中包含所有节点),另一个在每次应用过滤器时都会被擦除,并根据过滤器条件重新填充。然后,您只需将所有事件传回原始树视图。例如
Private Sub FilterResults_NodeClick(ByVal Node As MSComctlLib.Node)
On Error GoTo Trap
ModelNames_NodeClick Node
Set ModelNames.SelectedItem = Node
Exit Sub
Trap:
Select Case MsgBox(Err.Description, vbAbortRetryIgnore, Err.Number)
Case vbAbort
Exit Sub
Case vbRetry
Stop
Resume
Case vbIgnore
Resume Next
End Select
End Sub
你好,梅隆先生。很高兴见到你。希望你过得好。
欢迎来到theSwamp。
页:
[1]