【问题标题】:Winforms Panel and Scrollbar issueWinforms 面板和滚动条问题
【发布时间】:2013-04-27 22:39:50
【问题描述】:

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

在这个论坛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

【问题讨论】:

    标签: vb.net winforms panel intptr


    【解决方案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
    

    【讨论】:

    • 嘿 Carko - 很高兴有人醒了 - 非常感谢,这个问题困扰了我好久 :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-25
    • 1970-01-01
    • 1970-01-01
    • 2010-09-30
    • 2023-03-27
    相关资源
    最近更新 更多