2

我在 VB6 中有一个 TreeView,当单击节点的图像(+ 或 -)时,节点会展开然后立即折叠,反之亦然。我有一个 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

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

有谁知道在单击节点图像时如何防止节点在点击此 EventHandler 之前被展开/折叠?

任何帮助将不胜感激,在此先感谢。

4

1 回答 1

1

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

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
于 2012-07-26T09:31:02.343 回答