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