Отключить таймер VB6 во время обновлений - PullRequest
0 голосов
/ 26 октября 2019

Как мне выполнить мой timer1.enabled = true после того, как инструкция TreeView FOR достигла последнего элемента. Мой таймер начинает отсчет, пока древовидная структура еще работает.

Это код, который у меня есть.

Private Sub Command17_Click()
    Dim objRootNode As Node
    Dim objChildNode As Node
    Dim iRootCounter As Integer
    Dim iChildCounter As Integer
    Dim countt As Integer
    Dim ii As Integer

    For iRootCounter = 1 To TreeView2.Nodes.Count

        ii = TreeView2.Nodes(iRootCounter).Index

        Set objRootNode = TreeView2.Nodes(iRootCounter)

        If objRootNode.Image = 4 Then

            Set objChildNode = objRootNode.Child ' Gets first child

            For iChildCounter = 1 To objRootNode.Children

                If objChildNode.Image = 3 Then
                    objRootNode.Image = 9
                End If

                Set objChildNode = objChildNode.Next ' Get next node

            Next

        End If

        If TreeView2.Nodes(iRootCounter).Index = TreeView2.Nodes.Count - 0 Then
            If startt = True Then
                Timer1.Enabled = True
                Exit For
            End If
        End If

    Next

End Sub

Когда я запускаю этот код, элементы древовидной структуры остаются в режиме обработки, что означаетон продолжает выполнять свою работу по изменению индекса изображения для каждого элемента после запуска другого кода, после чего эта кнопка срабатывает.

1 Ответ

1 голос
/ 26 октября 2019

Просто добавьте Timer1.Enabled = False в начале обновления TreeView. Затем установите для него значение True перед выходом.

Еще лучше, остановите таймер в обработчике событий Timer1_Timer:

Private Sub Timer1_Timer()

    ' Stop timer until all code is execute
    Timer1.Enabled = False

    Command17_Click

    ' Restart timer
    Timer1.Enabled = True

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...