我在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之前阻止节点展开/折叠吗?
非常感谢任何帮助,提前谢谢。
答案 0 :(得分:1)
您可以使用TreeView的Collapse
和Expand
事件来设置一个布尔变量,指示您的过程不应该运行。 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