什麼時候需要這個功能, 例如ACDSee的Thumbnail縮略圖超過範圍時可透過滑鼠中鍵捲動範圍,
可透過MouseWheel事件取得, 然而在Panel中該事件並無作用, 因此必須透過其他
方法實現這個功能, 透過建立一個訊息篩選介面取得MouseWheel訊息, 並藉由Panel原生屬性AutoScrollPosition.
取得捲動方向, 當向下捲動時Y為負數反之為正數
Public Class PanelEx
    Inherits System.Windows.Forms.Panel
    Implements IMessageFilter
    Public Sub New()
        Application.AddMessageFilter(Me)
    End Sub

    Public Function PreFilterMessage(ByRef m As Message) As Boolean Implements IMessageFilter.PreFilterMessage
        If m.Msg = 522 Then '取得MouseWheel事件
            Dim _myPoint As Point = PointToScreen(New Point(0, 0))
            Dim _curPoint As Point = Cursor.Position
            '確保游標在指定控制項中
            If _curPoint.X > _myPoint.X AndAlso _curPoint.Y > _myPoint.Y AndAlso _curPoint.X < _myPoint.X + Width AndAlso _curPoint.Y < _myPoint.Y + Height Then
                If m.WParam.ToInt32 > 0 Then
                    AutoScrollPosition = New Point(AutoScrollPosition.X, (AutoScrollPosition.Y + 10) * -1) '上捲
                Else
                    AutoScrollPosition = New Point(AutoScrollPosition.X, (AutoScrollPosition.Y - 10) * -1) '下捲
                End If
            End If
        End If
        Return False
    End Function
End Class