Я сумел получить некоторую форму прокрутки на моем FlowLayoutPanel при использовании сенсорного экрана, реализовав следующий код ...vb.net FlowLayoutPanel сенсорный скроллинг
Dim mouseDownPoint As Point
Private Sub FlowLayoutPanelUsers_MouseDown(ByVal sender As Object, ByVal e As MouseEventArgs) Handles FlowLayoutPanelUsers.MouseDown
If (e.Button = MouseButtons.Left) Then
Me.mouseDownPoint = e.Location
End If
End Sub
Private Sub FlowLayoutPanelUsers_MouseMove(ByVal sender As Object, ByVal e As MouseEventArgs) Handles FlowLayoutPanelUsers.MouseMove
If (e.Button <> MouseButtons.Left) Then
Return
End If
If ((mouseDownPoint.X = e.Location.X) _
AndAlso (mouseDownPoint.Y = e.Location.Y)) Then
Return
End If
Dim currAutoS As Point = FlowLayoutPanelUsers.AutoScrollPosition
If (mouseDownPoint.Y > e.Location.Y) Then
'finger slide UP
If (currAutoS.Y <> 0) Then
currAutoS.Y = (Math.Abs(currAutoS.Y) - 1)
End If
ElseIf (mouseDownPoint.Y < e.Location.Y) Then
'finger slide down
currAutoS.Y = (Math.Abs(currAutoS.Y) + 1)
Else
currAutoS.Y = Math.Abs(currAutoS.Y)
End If
If (mouseDownPoint.X > e.Location.X) Then
'finger slide left
If (currAutoS.X <> 0) Then
currAutoS.X = (Math.Abs(currAutoS.X) - 1)
End If
ElseIf (mouseDownPoint.X < e.Location.X) Then
'finger slide right
currAutoS.X = (Math.Abs(currAutoS.X) + 1)
Else
currAutoS.X = Math.Abs(currAutoS.X)
End If
FlowLayoutPanelUsers.AutoScrollPosition = currAutoS
mouseDownPoint = e.Location
'IMPORTANT
End Sub
Это код, который я уже нашел на stackoverflow, так что спасибо за это!
То, что я хочу, чтобы этот код выполнял, по возможности, обратный, как он прокручивает, поэтому, если я прокручу влево, FlowLayoutPanel прокручивается вправо, если я прокручиваю вверх, панель прокручивается вниз, немного похожая на веб-браузер ,
У кого-нибудь есть понимание? Я пробовал простой бит, изменяя знаки минуса на плюс и наоборот, но никакого эффекта.
Заранее спасибо.
Итак, я обнаружил, что e.Location.X является представителем в контроле, а не контроль Родитель, что я пытаюсь прокрутить. После изменения e.Location на ... FlowLayoutPanelUsers.PointToClient (MousePosition) это сработало. На всякий случай, если кто-то хочет сделать аналогичный –