J'ai un contrôle UserControl contenant des zones de texte et des zones de liste déroulantes et ce contrôle UserControl est contenu dans un panneau avec AutoScroll défini sur True. Quand une zone de texte a le focus et que je défile avec la molette de la souris, le panneau défile, quand une combobox a le focus et que je défile avec la molette de la souris, l'élément sélectionné dans la combobox change.Modification du comportement de MouseWheel d'une zone de liste déroulante
Je suis sûr que c'est le comportement prévu, mais c'est quelque chose que je voudrais changer, de sorte que tous les événements mousewheel font défiler le panneau.
Pour ce faire, je traitais le message WM_MOUSEWHEEL dans la méthode WndProc dans une sous-classe ComboBox comme suit:
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
Est-il possible de le faire sans avoir recours à l'appel d'une méthode privée sur un contrôle par réflexion ?