تعديل السلوك عجلة الماوس لمنسدل
-
08-07-2019 - |
سؤال
ولدي يرد UserControl يحتوي مربعات النص وكومبوبوكسيس وهذا UserControl في لوحة مع وضع التمرير التلقائي إلى True.
وعندما يكون النص التركيز وأنا انتقل مع عجلة الماوس، ثم تمرير لوحة، عندما منسدل لديه التركيز وأنا انتقل مع عجلة الماوس ثم العنصر المحدد في التغييرات منسدل.
وأنا متأكد من أن هذا هو السلوك المقصود إنما هو شيء أود أن تتغير، حتى يتسنى لجميع الأحداث عجلة الماوس التمرير لوحة.
لذلك أنا معالجة الرسالة WM_MOUSEWHEEL في أسلوب WndProc في فئة فرعية تحرير وسرد كما يلي:
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
هل هناك طريقة للقيام بذلك دون اللجوء إلى استدعاء أسلوب خاص على عنصر تحكم عن طريق التفكير؟
المحلول
هل يمكن استخدام وظيفة SendMessage
Win32 لإحالة محتويات الرسالة، m
، لParent.Handle
.
لا تنتمي إلى StackOverflow