У меня есть UserControl, содержащий TextBoxes и ComboBoxes, и этот UserControl содержится в Panel с AutoScroll, установленной в True.
Когда текстовое поле имеет фокус, и я прокручиваю с помощью колесика мыши, затем панель прокручивается, когда комбинированный список имеет фокус, и я прокручиваю с помощью колесика мыши, тогда выбранный элемент в комбинированном ящике изменяется.
Я уверен, что это предполагаемое поведение, но я бы хотел изменить его, чтобы все события колесика мыши прокручивали панель.
Для этого я обрабатываю сообщение WM_MOUSEWHEEL в методе WndProc в подклассе ComboBox следующим образом:
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
Есть ли способ сделать это, не прибегая к вызову частного метода для элемента управления с помощью отражения?