2012-07-26 6 views
2

VB6에서 TreeView를 사용하면 노드의 이미지 (+ 또는 -)를 클릭하면 노드가 확장되어 즉시 축소되거나 그 반대의 경우도 있습니다. 나는 (단순화 된 버전은 아래 그림 참조) /이 클릭 노드를 축소 확장 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에 도달하기 전에 노드가 확장/축소되어 노드가이 EventHandler에 충돌 할 때 즉시 원래 상태로 돌아갑니다. 노드의 첫 번째 확장/축소는 노드 이미지의 MouseDown에서 발생하는 것으로 보입니다.

노드 이미지를 클릭 할 때이 EventHandler를 치기 전에 노드가 확장/축소되지 않도록하는 방법을 아는 사람이 있습니까?

모든 도움을 주시면 감사하겠습니다. 미리 감사드립니다.

+2

당신은 당신의 코드가 명시 적으로 설정할 수/붕괴를 처리하려고 메시지를 확장하고 드롭 할 수있다. – Deanna

답변

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 
+0

완벽하게 작동합니다. 감사합니다. – dante671