تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
كيف تستطيع إطلاق أحداثك الخاصة- RaiseEvent Tutorial
#1
كاتب الموضوع : samerselo

أنشئ مشروعا جديدا وسمه 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
}}}
تم الشكر بواسطة:



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


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