У меня есть две tablelayoutpanels бок о бок. События прокрутки обеих панелей связаны, поэтому пользователь прокручивает одну, а другая прокручивает. Это отлично работает:
Private Sub Layout_SidePanel_Scroll(sender As Object, e As ScrollEventArgs) Handles Layout_SidePanel.Scroll
If e.ScrollOrientation = ScrollOrientation.VerticalScroll Then
'make the other panel scroll too
Layout_Main.VerticalScroll.Value = Layout_SidePanel.VerticalScroll.Value
End If
End Sub
Private Sub Layout_Main_Scroll(sender As Object, e As ScrollEventArgs) Handles Layout_Main.Scroll
If e.ScrollOrientation = ScrollOrientation.VerticalScroll Then
'make the other panel scroll too
Layout_SidePanel.VerticalScroll.Value = Layout_Main.VerticalScroll.Value
End If
End Sub
Однако, когда пользователь использует колесо мыши для прокрутки, оно совсем не работает. Будет прокручиваться одна сторона, а не другая. Или один будет прокручивать немного больше, чем другой. Я проверил значения вертикальной прокрутки двух панелей и увидел, что они не совпадают. Мне нужно либо заставить прокрутку работать постоянно, либо отключить прокрутку колесика мыши. Это мой код для обработки событий колесика мыши:
Private Sub Layout_Main_MouseWheel(sender As Object, e As MouseEventArgs) Handles Layout_Main.MouseWheel
Layout_SidePanel.VerticalScroll.Value = Layout_Main.VerticalScroll.Value
End Sub
Private Sub Layout_Sidepanel_MouseWheel(sender As Object, e As MouseEventArgs) Handles Layout_SidePanel.MouseWheel
Layout_Main.VerticalScroll.Value = Layout_SidePanel.VerticalScroll.Value
End Sub