05-10-12, 01:51 AM
كاتب الموضوع : samerselo
أنشئ مشروعا جديدا وسمه RaiseEventsTest ثم أضف له Class واقبل الاسم الافتراضي Class1حتى نطلق احداثنا الخاصة ونلتزم بالصيغة التي نشاهدها في الأحداث الخاصة بالتحكمات مثل
كود :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
سنقوم أولا باشتقاق فئة من الفئة 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
الآن بعد تعريف class1 أدخل تعريف الحدث الذي نريد إطلاقه كما يلي
كود :
Public Class Class1
Public Event TestEvent(ByVal sender As Object, ByVal e As CustomEventArgs)
كود :
Public Sub DoTestEvent()
Dim e As New CustomEventArgs("Member No 1", 1500)
RaiseEvent TestEvent(Me, e)
End Sub
وهذا النص الكامل له
كود :
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
الأن سنقوم بتعريف متغير يشير إلى class1 وذلك بعد Windows Form Designer generated code مباشرة
كود :
Private WithEvents cls As New 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