Ich habe ein UserControl, das TextBoxes und ComboBoxes enthält, und dieses UserControl ist in einem Panel enthalten, in dem AutoScroll auf True gesetzt ist.Ändern des MouseWheel-Verhaltens einer Combobox
Wenn ein Textfeld den Fokus hat und ich mit dem Mausrad blättern, scrollt das Panel, wenn ein Combobox den Fokus hat und ich mit dem Mausrad blättern dann ändert sich das ausgewählte Element in der Combobox.
Ich bin mir sicher, dass dies das beabsichtigte Verhalten ist, aber es ist etwas, das ich ändern möchte, so dass alle Mausrad Ereignisse das Panel scrollen.
Um dies zu tun, ich in einer ComboBox Unterklasse die WM_MOUSEWHEEL Nachricht in der WndProc Methode am Umgang wie folgt:
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
Gibt es eine Möglichkeit, dies über ein eigenes Verfahren zum Aufruf auf einer Steuerung über Reflexion ohne Rückgriff zu tun ?