السلام عليكم ورحمة الله
استكمالا لسلسلة دروس الـ OOP in VB.NET أردت تقديم درس في الـ Events ,
وعلي الرغم من الأخ محمد سامر samerselo قد قدم فيها درس من فترة الا اني أردت أن أستكمل السلسلة وأن أقدم الدرس بصورة أخري بحيث يكمل كل منهما الآخر (وأرجو ألا يجعل ذلك بيني وبين الأخ محمد أي حساسيات) ,
موضوع الأخ محمد سامر Samerselo
كثيرا ما نسمع الكلمات الآتيه :
Event, Event Handler,Handles,AddHandler,RemoveHandler ونجدها في الأكواد ولا نعرف معناها ,
فكلمة Event تعني حدث أما كلمة Event Handler تمثل الاجراء الذي سيتم تنفيذه عندما يتم رفع أو تنفيذ الحدث ,
كلمة Handles تستخدم لالحاق اجراء ما بحدث أو ما يسمي Assignment للاجراء بالحدث , ومثلها كلمة AddHandler , وبالطبع عكسهما كلمة RemoveHandler ,
بدلا من الكلام دعونا نعمل بالأمثلة :
افتح معي مشروعا جديدا وسميه Events وأنشئ Class جديده باسم Myevents ,
الخطوه الأولي هي الاعلان عن الحدث ويتم ذلك بكتابة العباره Public Event متبوعه باسم الحدث ,
Public Event Event1()
بعد أن أعلنا عن الحدث الذي نريد كيف نجعل الحدث يعمل أو كيف نرفع الحدث ? How to raise the event :
يتم ذلك من خلال اجراء يحتوي علي العباره RaiseEvent متبوعه باسم الحدث المراد تنفيذه ,
Sub CauseEvent() RaiseEvent Event1() End Sub
الآن لكي نجرب الحدث الذي أنشأناه هناك طريقتين الفرق بينهما بسيط وكلاهما جيد ,
الان نذهب الي الفورم وفي منطقة الاعلان عن المتغيرات أكتب :
Dim WithEvents x As New MyEvents
في السطر السابق أنشأنا Object للكلاس Myevents بالأحداث التي تحتويها ,
ثم نضع زر علي الفورم وفي حدث الضغط عليه نكتب :
x.CauseEvent()
في السطر السابق قمنا بتشغيل الاجراء الذي سيقوم برفع الحدث أو تشغيله ,
قم بتحرير الحدث كما بالصوره :
وسوف تنتقل الي منطقة الحدث واكتب بداخلة ما تريد ,
ثم قم بتشغيل البرنامج وأضغط علي الزر وانظر النتيجه ,
في الطريقة السابقة أريد أن نلقي نظره علي التركيب البنائي للحدث :
Private Sub x_Event1() Handles x.Event1
MsgBox("I did it")
End Subنجد أنه تم كتابة Private Sub x_Event1() Handles x.Event1 أي أن الاجراء الذي اسمه x_Event1 يعالج الحدث Event1 الخاص بالـ Object الذي اسمه x :
هناك طريقة أخري لتحرير الحدث ولكن يدويه وتكون عن طريق كتابة العبارة AddHandler بالصوره الآتيه :
AddHandler x.Event1, AddressOf Me.EventHandler
ثم تشغيل الحدث بتشغيل الاجراء الحدث الذي يحتوي علي العباره RaiseEvent Event1 في الكلاس كالآتي :
x.CauseEvent()
ثم كتابة العباره RemoveHandler لكي نزيل الـ Handling من الحدث :
RemoveHandler x.Event1, AddressOf EventHandler
قم بتشغيل البرنامج وانظر النتيجه ,
ملحوظه : لو قمت بعمل الطريقتين في وقت واحد ستجد أنه يتم تنفيذ اجرائين في نفس الوقت ,,,
أرجو أن يكون الدرس قد أعجبكم واستفدتم منه إن شاء الله , والموضوع مفتوح للمناقشه والاستفسار ,,,


