تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
كيف أتحكم في ترتيب تنفيذ الـEvent Handlers ؟
#1
السلام عليكم و رحمة الله و بركاته،
[SIZE=5][SIZE=4]كيف أت[SIZE=4]حكم في ترتيب الـEvent Handlers ؟
أنا ع
[SIZE=4]ندي [SIZE=4]في [SIZE=4]المشروع صورة شبيهة بتلك:[/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE]
كود :
[SIZE=4]Public Class Class1

    Public Event Event1(ByVal e As System.EventArgs)

    Protected Sub OnEvent1(ByVal e As System.EventArgs) Handles Me.Event1
        MsgBox("Default Protected Handler")
    End Sub

    Public Sub RaiseEvent1()
        RaiseEvent Event1(EventArgs.Empty)
    End Sub
End Class

Public Class Class2

    Public Sub HandleEvent1(ByRef itsClass As Class1)
        AddHandler itsClass.Event1, AddressOf Event1Handler
    End Sub

    Public Sub Event1Handler(ByVal e As System.EventArgs)
        MsgBox("Recently added Handler")
    End Sub
End Class

Public Module Module1

    Public Sub Main()
        Dim myClass1 As New Class1
        Dim myClass2 As New Class2
        myClass2.HandleEvent1(myClass1)
        myClass1.RaiseEvent1()
        End
    End Sub
End Module[/SIZE]
(المثا[SIZE=4]ل يبدأ بـSub Main و ليس Form1)
[/SIZE][SIZE=4]في الكود أعلاه، [SIZE=4]أريد تفعيل [SIZE=4]الـHandler الذي به الرسالة: "Recently added Handler" قبل الـHandler الذي به الرسالة: "Default Protected Handler"[/SIZE][/SIZE]
(مع مراعاة عدم تغيير كود Class1)
[/SIZE]
الرد }}}
تم الشكر بواسطة:
#2
تحتاج إلى إضافة حدث إضافي إلى Class1 وليكن BeforeEvent1 عندها يمكنك إطلاقه قبل الحدث Event1 وبالتالي تشغيل جميع Handlers المطلوبة قبل تنفيذ الحدث Event1
كود :
Public Sub RaiseEvent1()
      RaiseEvent BeforeEvent1(EventArgs.Empty)
      RaiseEvent Event1(EventArgs.Empty)
End Sub


غير هذه الطريقة لايمكن تنفيذ ما طلبت إذ أنك قد كسرت تمامًا الهدف الرئيسي من Events.

[/SIZE]
الرد }}}
تم الشكر بواسطة:
#3
Islam Ibrahim كتب :تحتاج إلى إضافة حدث إضافي إلى Class1 وليكن BeforeEvent1 عندها يمكنك إطلاقه قبل الحدث Event1 وبالتالي تشغيل جميع Handlers المطلوبة قبل تنفيذ الحدث Event1
كود :
Public Sub RaiseEvent1()
      RaiseEvent BeforeEvent1(EventArgs.Empty)
      RaiseEvent Event1(EventArgs.Empty)
End Sub


غير هذه الطريقة لايمكن تنفيذ ما طلبت إذ أنك قد كسرت تمامًا الهدف الرئيسي من Events.

شكراً للإفادة أخي، لكن بحكم أنك من خبراء Microsoft فهل توجد أي طريقة للتحايل على هذا و التحكم في ترتيب الـHandlers ؟
(بدون التغيير في Class1)
الرد }}}
تم الشكر بواسطة:
#4
هناك طريقة وحيدة وهي كتابة فئة جديدة موروثة من الفئة Class1 وعمل Hiding (أو Shadowing) للإجراء OnEvent1 بحيث يتم تغيير ترتيب EventHandlers بشكل ما, لكني لا أفضل هذه الطريقة فهي ستعقد الأمر أكثر.

هل Class1 قابل للتعديل (من كتابتك) أم مضمن في مكتبة خارجية, وإن كان كذلك اعرضه لنرى فقد يكون به إجراءات أخرى مفيدة للغرض الذي تسعى لتحقيقه.

[/SIZE]
الرد }}}
تم الشكر بواسطة:
#5
Islam Ibrahim كتب :هناك طريقة وحيدة وهي كتابة فئة جديدة موروثة من الفئة Class1 وعمل Hiding (أو Shadowing) للإجراء OnEvent1 بحيث يتم تغيير ترتيب EventHandlers بشكل ما, لكني لا أفضل هذه الطريقة فهي ستعقد الأمر أكثر.

هل Class1 قابل للتعديل (من كتابتك) أم مضمن في مكتبة خارجية, وإن كان كذلك اعرضه لنرى فقد يكون به إجراءات أخرى مفيدة للغرض الذي تسعى لتحقيقه.

أولاً: شكراً لك أخي فهذه تعتبر الطريقة الأمثل
ثانياً للمعلومة: Class1 هو System.Windows.Forms.Label
ثالثاً: أحب أعتذر عن التأخير في الرد Smile
الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  تنفيذ السكريبت لانشاء قاعدة بيانات محمد خيري 2 364 30-11-24, 01:17 AM
آخر رد: محمد خيري
  ترتيب شجره الحسابات داخل الجريد فيو modymody300894 2 406 31-10-24, 12:27 PM
آخر رد: modymody300894
  [سؤال] تنفيذ عدة أوامر مختلفة في خلية DGV عند الضغط بعدة أزرار Mohamd Mercy To TheWorlds 0 265 10-09-24, 08:26 AM
آخر رد: Mohamd Mercy To TheWorlds
  [C#.NET] تنفيذ امر h2551996 1 361 23-06-24, 02:05 PM
آخر رد: h2551996
  تنفيذ أمر عند الضغط على أى زر من الكيبورد heem1986 1 354 12-06-24, 05:57 PM
آخر رد: تركي الحلواني
  كيفية تنفيذ امر عند التعليم على checkbox بالداتا جريد فيو heem1986 2 624 21-02-24, 01:37 AM
آخر رد: heem1986
  كيفية تنفيذ أمر عرض بيانات من فورم ثان مصمم هاوي 7 851 19-02-24, 12:28 AM
آخر رد: مصمم هاوي
  تنفيذ كود عند حدوث تغيرات فى أحد جداول قاعد بيانات sql heem1986 2 527 16-02-24, 06:37 AM
آخر رد: عبدالله الدوسري
  مشكلة عدم اكتمال تنفيذ بسبب فصل الشبكة او التيار الكهربائي اثناء النتفيذ تناسيم 3 2,149 05-02-24, 10:04 PM
آخر رد: 01AHMED
  ترتيب Crystal Report Sort waataanys 1 713 05-01-24, 12:40 AM
آخر رد: HALIM ELEULMA

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم