Прокрутка колесика мыши несовместима с двумя панелями tablelayoutpanel

У меня есть две 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

person DovesandChicks    schedule 24.02.2015    source источник


Ответы (1)


Нашел!

https://stackoverflow.com/a/5565804/3953342

Мне нужно включить .PerformLayout

Layout_SidePanel.VerticalScroll.Value = Layout_Calendar.VerticalScroll.Value
Layout_SidePanel.PerformLayout()
person DovesandChicks    schedule 24.02.2015