代码之家  ›  专栏  ›  技术社区  ›  Patrick McDonald

修改组合框的鼠标跟行为

  •  0
  • Patrick McDonald  · 技术社区  · 16 年前

    我有一个包含文本框和组合框的用户控件,这个用户控件包含在一个面板中,其中autoscroll设置为true。

    当一个文本框有焦点,我用鼠标滚轮滚动时,面板滚动;当一个组合框有焦点,我用鼠标滚轮滚动时,组合框中的选定项更改。

    我确信这是我想要改变的行为,所以所有鼠标跟事件都会滚动面板。

    为此,我在ComboBox子类中处理wndProc方法中的wm_mousewheel消息,如下所示:

    Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
        Const WM_MOUSEWHEEL As Integer = &H20A
        Select Case m.Msg
            Case WM_MOUSEWHEEL
                ' Send the message to the parent
                GetType(Control).InvokeMember("WmMouseWheel", Reflection.BindingFlags.InvokeMethod Or Reflection.BindingFlags.Instance Or Reflection.BindingFlags.NonPublic, Nothing, Parent, New Object() {m})
                Return
        End Select
        MyBase.WndProc(m)
    End Sub
    

    有没有一种方法可以做到这一点而不用通过反射调用控件上的私有方法?

    1 回复  |  直到 16 年前
        1
  •  2
  •   Tim Robinson    16 年前

    您可以使用win32 SendMessage 用于转发邮件内容的函数, m ,为了 Parent.Handle .

    推荐文章