الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

معلومة: كيف تستطيع إطلاق أحداثك الخاصة

مغلق
بدأه محمد سامر أبو سلو في 24 سبتمبر 2005 · 9 رد · 3,626 مشاهدة · في قسم الدروس والمواضيع المتميزة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

سأحاول العمل خطوة خطوة قدر الإمكان

وأفترض أن الذي يتابع العمل معي لديه بعض الالمام بالفئات Class

أنشئ مشروعا جديدا وسمه RaiseEventsTest ثم أضف له Class واقبل الاسم الافتراضي Class1

حتى نطلق احداثنا الخاصة ونلتزم بالصيغة التي نشاهدها في الأحداث الخاصة بالتحكمات مثل

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

حيث نجد ان لكل حدث قيمتان دوما هي sender المرسل للحدث و e القيم الممررة بواسطة الحدث

سنقوم أولا باشتقاق فئة من الفئة System.EventArgs ونضمنها القيم التي نريد تمريرها وفائدة هذا الاجراء هو مرونة البرنامج لاحقا عندما تريد التعديل فإذا أردت إضافة قيمة جديدة ليتم تمريرها لن تحتاج سوى لإضافتها هنا و هذا نص الفئة الجديدة

أدخل هذا الكود في الملف الجديد class1

    Public Class CustomEventArgs
        Inherits System.EventArgs

        Private m_Member1 As String
        Private m_Member2 As Integer

        Public ReadOnly Property Member1() As String
            Get
                Return m_Member1
            End Get
        End Property

        Public ReadOnly Property Member2() As Integer
            Get
                Return m_Member2
            End Get
        End Property

        Public Sub New(ByVal M1 As String, ByVal M2 As Integer)
            m_Member1 = M1
            m_Member2 = M2
        End Sub

    End Class

حيث عرفنا خاصيتين member1 و member2 لتعيدا القيم التي نريدها و أنشأنا sub new لتهيئة القيم قبل الارسال

الآن بعد تعريف class1 أدخل تعريف الحدث الذي نريد إطلاقه كما يلي

Public Class Class1

    Public Event TestEvent(ByVal sender As Object, ByVal e As CustomEventArgs)

ثم سنضيف إجراء لنطلق الحدث الذي نريده من داخل class1 كالكود التالي حيث نمرر القيم التي نريد ارسالها كبارامترات للمشيد constructor الخاص بالفئة customeventargs ثم نستخدم الأمر raiseevent لإطلاق الحدث

    Public Sub DoTestEvent()
        Dim e As New CustomEventArgs("Member No 1", 1500)
        RaiseEvent TestEvent(Me, e)
    End Sub

وبهذا نكون قد انتهينا من إنشاء class1 ولم يبق سوى أن نختبره

وهذا النص الكامل له

Public Class Class1

    Public Event TestEvent(ByVal sender As Object, ByVal e As CustomEventArgs)

    Public Class CustomEventArgs
        Inherits System.EventArgs

        Private m_Member1 As String
        Private m_Member2 As Integer

        Public ReadOnly Property Member1() As String
            Get
                Return m_Member1
            End Get
        End Property

        Public ReadOnly Property Member2() As Integer
            Get
                Return m_Member2
            End Get
        End Property

        Public Sub New(ByVal M1 As String, ByVal M2 As Integer)
            m_Member1 = M1
            m_Member2 = M2
        End Sub

    End Class

    Public Sub DoTestEvent()
        Dim e As New CustomEventArgs("Member No 1", 1500)
        RaiseEvent TestEvent(Me, e)
    End Sub

End Class

و لاختبار ما فعلناه إذهب إلى form1 وضع عليها زرا وانقر عليه نقرا مزدوجا فتنتقل لمحرر الكود

الأن سنقوم بتعريف متغير يشير إلى class1 وذلك بعد Windows Form Designer generated code مباشرة

    Private WithEvents cls As New Class1

لاحظ استخدام العبارة withevents في تعريف المتغير الذي يشير لـ class1 حتى نستطيع التعامل مع الأحداث التي يطلقها

من القائمة المنسدلة اليسارية فوق محرر الكود اختر cls ثم من القائمة المنسدلة اليمينية اختر الحدث testevent فيضيف محرر الكود إجراء التعامل مع الحدث الخاص بنا أدخل الكود ضمن محرر الشيفرة ليصبح الاجراء الجديد كالتالي

    Private Sub cls_TestEvent(ByVal sender As Object, ByVal e As Class1.CustomEventArgs) Handles cls.TestEvent
        MsgBox(e.Member1 & ControlChars.CrLf & e.Member2)
    End Sub

الآن انتقل إلى حدث النقر على الزر وعدله ليصبح كالتالي

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        cls.DoTestEvent()
    End Sub

مرفق المشروع كاملا ولكن أقترح القيام بالعمل خطوة خطوة قبل أن تحمل المشروع

وسأحاول قدر الإمكان الإجابة عن أي تساؤل بخصوص الموضوع

RaiseEventsTest.zip

تم تعديل هذه المشاركة بواسطة محمد سامر أبو سلو في 23 يوليو 2007 في 12:18

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#2

ِشكرا اخي لكن ما الذي نستفيده من هذا الدرس

تعلم:كيف تشغل برنامجك (قبل) ما يشتغل ال explorer, مثل ال check desk في الوندوز 98 و me

اللهم عطر يومنا بالايمان وانر قلبنا بالقرآن ورزقنا من حيث لانحتسب واجعل لنا سكينة تطمئن بها روحنا واحفظنا من كل سوء اللهم بارك لنا في رجب وشعبان وبلغنا رمضان آمين يارب العالمين

ranneh.com

#3
NO BODY CAN BEAT ME كتب:
ِشكرا اخي لكن ما الذي نستفيده من هذا الدرس

أخي مع الأسف لن أستطيع الإجابة بدقة على سؤالك لأن جوابه كبير جدا وسأحاول إعطاؤك مثال

أنت تصمم تحكم usercontrol ليقوم بعمل معين مثلا تحكم تغيير اللغة الذي قمت بوضعه منذ فترة في المنتدى وأنا أريد إعلام مستخدم التحكم بأن اللغة قد تم تغييرها فأستخدم الأمر rasiseevent كالدرس أعلاه لإطلاق حدث تغيير اللغة كلما تم تغييرها ومستخدم التحكم يقوم بعمل إجراء لاصطياد هذا الحدث الذي قمت بإطلاقه ويقوم بكتابة الكود المناسب لهذه الحالة

أرجو أن أكون قد استطعت توضيح الهدف من هكذا اجراء نوعا ما

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#4

شكرا اخي على الشرح هل من الممكن ان تزور هذه الرابطة وتساعدني في هذا السؤال لان الاخوة الخبراء يمرون عليه مررور الكرام او حتى انهم لا يمرو عليه لقد وضعت السؤال مرتين ولم يساعدني احد هذه هي الرابطة

/index.php?showtopic=76571

تعلم:كيف تشغل برنامجك (قبل) ما يشتغل ال explorer, مثل ال check desk في الوندوز 98 و me

اللهم عطر يومنا بالايمان وانر قلبنا بالقرآن ورزقنا من حيث لانحتسب واجعل لنا سكينة تطمئن بها روحنا واحفظنا من كل سوء اللهم بارك لنا في رجب وشعبان وبلغنا رمضان آمين يارب العالمين

ranneh.com

#5
NO BODY CAN BEAT ME كتب:
شكرا اخي على الشرح هل من الممكن ان تزور هذه الرابطة وتساعدني في هذا السؤال لان الاخوة الخبراء يمرون عليه مررور الكرام او حتى انهم لا يمرو عليه لقد وضعت السؤال مرتين ولم يساعدني احد هذه هي الرابطة

/index.php?showtopic=76571

بالنسبة للرابط الذي وضعته جواب سؤالك حتى لحظة وضع هذا الرد لا أدري

وأي تساؤل بخصوص الموضوع المطروح هنا سأحاول الإجابة عنه قدر الإمكان

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#6

جزاك الله خيرا يا أخ محمد ,,,

تم تعديل هذه المشاركة بواسطة hazzoom في 22 أكتوبر 2005 في 16:28

#7

انا بصراحة قريته ولكن زي مايقولو تيتي تيتي زي مارحتي زي ماجيتي

لاني ضعيف بالكلاسات رغم اني احبها ولكن احتاج الى وقت لكي اقرأ عنها بسبب ضغط العمل. وشكرا للجميع

<span style='color:green'>سؤل ابن عباس عن علمه كيف جمعه فقال :( أوتيت لسانا سؤولا وقلبا عقولا)</span>

#8

طيب يا إخوان

هيك رح يصر لي اكتئاب

معقولة اسلوبي في الشرح غامض لهذه الدرجة؟؟؟؟؟؟؟؟؟؟؟؟؟

على كل حال أنا أشرت إلى أنو أي شي مو واضح اسأل وبحاول اشرح أكتر

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#9

الاسلوب ليس غامض و لكن الموضوع متقدم نوعاً ما فاطلاق احداثك الخاصة تهم مطورى المكونات اكثر

على كل وجود مثال بسيط للتطبيق قد يقرب الفكرة

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#10

وللجميع ومن أجل مزيد من التوضيح يوجد مثال عملي على الموضوع ضمن الرابط تحكم - تغيير اللغة - مع الكود المصدري, تطبيقا على بعض المواضيع

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

هذا الموضوع مغلق.

مواضيع مشابهة