0

这个问题困扰了我一段时间 - 当试图向下滚动面板时,在释放鼠标之前栏不会移动(在其他控件中似乎不是问题)。

在这个论坛http://csharpcode25.appspot.com/question/5080f1624f1eba38a4ca86bf中,用户遇到了同样的问题,并且通过覆盖 WndProc 给出了一个可能的解决方案 - 不确定从 C# 到 VB 的翻译中是否丢失了某些东西,但它只是抛出了一个错误“参数“数字”的类型是“System.IntPtr”,它不是数字。在第一行。有任何想法吗?

谢谢

Public Class Panelx
    Inherits Panel
    Private Const WM_HSCROLL As Integer = &H114
    Private Const WM_VSCROLL As Integer = &H115

    Protected Overrides Sub WndProc(ByRef m As Message)
        Try
            If (m.Msg = WM_HSCROLL OrElse m.Msg = WM_VSCROLL) AndAlso ((CInt(Fix(m.WParam)) And &HFFFF) = 5) Then
                ' Change SB_THUMBTRACK to SB_THUMBPOSITION
                m.WParam = CType((CInt(Fix(m.WParam)) And (Not &HFFFF)) Or 4, IntPtr)
            End If
            MyBase.WndProc(m)
        Catch ex As Exception
            EmailError(ex)
        End Try
    End Sub
End Class
4

1 回答 1

1

只需删除对 Fix() 方法的调用:

If (m.Msg = WM_HSCROLL OrElse m.Msg = WM_VSCROLL) AndAlso ((CInt(m.WParam) And &HFFFF) = 5) Then
    ' Change SB_THUMBTRACK to SB_THUMBPOSITION
    m.WParam = CType((CInt(m.WParam) And (Not &HFFFF)) Or 4, IntPtr)
End If
于 2013-04-27T22:50:41.153 回答