문제

텍스트 상자와 콤보해스가 포함 된 usercontrol이 있으며이 usercontrol은 Autoscroll이 True로 설정된 패널에 포함되어 있습니다.

텍스트 상자에 초점이 맞고 마우스 휠로 스크롤하면 패널 스크롤이 스크롤됩니다. 콤보 박스에 초점이 맞고 마우스 휠로 스크롤 한 다음 Combobox에서 선택한 항목이 변경됩니다.

나는 이것이 의도 된 행동이라고 확신하지만 모든 Mousewheel 이벤트가 패널을 스크롤하도록 변경하고 싶은 것입니다.

이를 위해 나는 다음과 같이 콤보 박스 서브 클래스에서 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

반사를 통해 컨트롤에서 개인 방법을 호출하지 않고이 작업을 수행 할 수있는 방법이 있습니까?

도움이 되었습니까?

해결책

Win32를 사용할 수 있습니다 SendMessage 메시지 내용을 전달하는 기능, m, 에게 Parent.Handle.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top