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 部分をクリックすると、この EventHandler に到達する前に Node が展開/折りたたみされるため、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 に答える