我在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的Collapse
和Expand
事件来设置一个布尔变量,指示您的过程不应该运行。例如:
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