检测TreeView节点图像单击



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

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

如果单击了节点的文本部分,则此操作效果良好。但是,如果单击了节点的图像部分,则节点会在到达该EventHandler之前展开/折叠,从而导致节点在到达该事件Handler时立即返回到其原始状态。节点的第一次展开/折叠似乎发生在节点图像的MouseDown上。

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

如有任何帮助,我们将不胜感激,并提前表示感谢。

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

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

最新更新