TreeView пользовательская вертикальная полоса прокрутки - PullRequest
0 голосов
/ 05 января 2012

У меня есть приложение .NET 3.5 WinForms, в котором я реализовал собственную горизонтальную и вертикальную полосу прокрутки для TreeView. Однако, если у узла есть дочерние узлы, он не позволит вам прокручивать дочерние узлы.

Моя подпрограмма для прокрутки выглядит следующим образом

Private Sub vsbLayers_Scroll(sender As System.Object, e As System.Windows.Forms.ScrollEventArgs) Handles vsbLayers.Scroll
    Try
        If e.Type = ScrollEventType.SmallIncrement OrElse e.Type = ScrollEventType.LargeIncrement Then
            tvLayers.Nodes(e.NewValue + _visible).EnsureVisible()
        ElseIf e.Type = ScrollEventType.SmallDecrement OrElse e.Type = ScrollEventType.LargeDecrement Then
            tvLayers.Nodes(e.NewValue).EnsureVisible()
        ElseIf (e.Type = ScrollEventType.ThumbTrack) Then
            If e.NewValue > e.OldValue Then
                tvLayers.Nodes(e.NewValue + _visible).EnsureVisible()
            ElseIf e.NewValue = e.OldValue Then
                'Needed to ensure the layers list does not jump up one when you just click on the thumb
            Else
                tvLayers.Nodes(e.NewValue).EnsureVisible()
            End If
        End If
        Application.DoEvents()
        If hsbLayers.Enabled Then
            Dim y As Integer = GetTreeViewScrollPos(tvLayers).Y
            Dim pt As New Point(0, y)
            SetTreeViewScrollPos(tvLayers, pt)
            hsbLayers.Value = 0
        End If
    Catch ex As Exception
        LogError(ex.ToString)
    End Try
End Sub

Я уверен, что мне нужно что-то сделать, чтобы увидеть, есть ли у узла дочерние узлы, и прокрутить их, но я не знаю, как это сделать. У кого-нибудь есть предложения на что посмотреть?

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