문제

일부 VB6 코드,내가 처리기 위해 트의 붕괴 이벤트:

Private Sub MyTree_Collapse(ByVal Node as MSComCtlLib.Node)

이라마에서 노드 트리가 축소되는지 여부에 의해 사용자 또는 프로그래밍 방식으로 보여줍니다.으로 밝혀를 통해,몇 가지 원형 교차로에 실행,그것은 일어날 수 있는 이 핸들러는 것이 바람을 말하는 노드가 축소하는 선도,무한 재귀.

나는 생각할 수 있는 여러 가지 방법을 피부 이 고양이는 있지만,무엇을 보인 가장 간단하게 말해 트리를 인상하지 않는 이벤트의 일부 기간에 대한 시간입니다.를 찾을 수가 없어요 간단한 전화를 해보겠습니다.는 사람이 성공적으로 이것,또는 나는 필요한 추적을 유지하의 국가에서 다른 방식으로 그래서 내가 응답할 수 있는 적절한 경우 재귀적 이벤트를 따라 오?

도움이 되었습니까?

해결책

내가 생각하는 것처럼 많은 이벤트에 VB 할 수 없습니다 꺼져 있습니다.

그냥 설정 boolean flag 으로 당신을 제안합니다.

다른 팁

@필-나는 같은 결론입니다.나의 구현 MyTree_Collapse 이제 다음과 같은(가 m_bHandlingCallback 구성원 변수):

Private Sub MyTree_Collapse(ByVal Node as MSComCtlLib.Node)
    If m_bHandlingCallback Then Exit Sub

    m_bHandlingCallback = True
    DoSomeStuff
    m_bHandlingCallback = False
End Sub

또 다른 방법에 VB6 은 대체 WithEvents 대한 참조를 제어:

Private WithEvents alt as TreeView

고서 Form_Load:

Private Sub Form_Load()
Set alt = MyTree
End Sub

지금 alt 을 받을 것이 많은 이벤트의 다음과 같다:

Private Sub alt_Collapse(ByVal Node as MSComCtlLib.Node)
Set alt = Nothing
'DoSomeStuff'
Set alt = MyTree
End Sub

하지만,중 DoSomeStuff, 이벤트는 벗겨-는 또한 적용되는 모든 다른 이벤트 Subs alt 에 대한 필요없이 그들을 방해 변경됩니다.

나는 선언의 플래그는 변수에 정적 하위.이 변수를 만들의 글로벌하고 유지 그 사이의 값을 호출합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top