检测TreeView节点 - 图像单击

时间:2012-07-26 08:43:01

标签: vb6 treeview

我在VB6中有一个TreeView,当点击Node的图像(+或 - )时,Node会扩展然后立即折叠,反之亦然。我有一个TreeView Click方法,当点击它时会扩展/折叠一个节点(简化版本如下所示)

Private Sub MyTreeView_Click()

    Dim selectedNode As Node
    Dim nodeType As String

    Set selectedNode = MList2.SelectedItem
    If selectedNode Is Nothing Then
        Exit Sub
    End If

    nodeType = selectedNode.Key

    If nodeType = "MyNodeType" Then

        'Collapse Node if it's already expanded, otherwise expand it.
        If selectedNode .Expanded Then
            selectedNode .Expanded = False
        Else
            'Do some processing

            selectedNode .Expanded = True
        End If
    End If
End Sub

如果单击节点的文本部分,则此方法可以正常工作。但是,如果单击节点的Image部分,则在到达此EventHandler之前展开/折叠节点,从而导致节点在遇到此EventHandler时立即返回其原始状态。节点的第一次展开/折叠似乎发生在节点映像上的MouseDown上。

有人知道如何在点击节点图像时点击此EventHandler之前阻止节点展开/折叠吗?

非常感谢任何帮助,提前谢谢。

1 个答案:

答案 0 :(得分:1)

您可以使用TreeView的CollapseExpand事件来设置一个布尔变量,指示您的过程不应该运行。 EG:

Dim bNodeImageClicked As Boolean

Private Sub MyTreeView_Collapse(ByVal Node As MSComctlLib.Node)
    bNodeImageClicked = True
End Sub

Private Sub MyTreeView_Expand(ByVal Node As MSComctlLib.Node)
    bNodeImageClicked = True
End Sub

Private Sub MyTreeView_Click()
    If bNodeImageClicked Then
        bNodeImageClicked = False
        Exit Sub
    End If

    'Your code...
End Sub