سؤال

ولدي يرد 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.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top