Combobox의 Mousewheel 거동 수정
-
08-07-2019 - |
문제
텍스트 상자와 콤보해스가 포함 된 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
.
제휴하지 않습니다 StackOverflow