Create Your Own Event and Event Handler With Your Own Delegate In VB.NET

Posted at : Nov/19/2008
3283 Views | 3 Comments

Salah satu implementasi dari delegate ialah membuat event handler yang menangani event dengan signature yang telah ditentukan. Delegate merupakan sebuah type. Implementasi lain dari delegate ialah Callback mechanism. Namun pada artikel kali ini saya akan membahas implementasi delegate untuk event dan event handler.

Bayangkan anda mempunyai sebuah class. Di dalam class tersebut terdapat sebuah property dimana proses assignment valuenya harus divalidasi dengan sebuah rule tertentu, lalu anda ingin propagate notifikasi ke user jika validasinya tidak valid berupa message errornya. Ok...mari kita buat class yang sederhana :

Public Class Order

Private mQty As Integer
Public Property
Quantity() As Integer
Get
Return
mQty
End Get
Set
(ByVal value As Integer)
mQty = value
End Set
End Property

End Class

Misalkan aplikasi punya rule bahwa untuk memberikan nilai pada properti Quantity valuenya harus lebih besar nol, lalu notifikasi error message nya kita deliver ke user bila rule tersebut tidak dipenuhi. Bagaimana langkah2nya? Pertama buat terlebih dahulu delegate object nya :

Public Class Order

Private Delegate Sub MyDelegateSub(ByVal Message As String)

Delegate yang saya buat signature nya berupa sebuah Sub yang memiliki satu buah input parameter dengan tipe data string. Langkah kedua buat event yang kita definisikan sendiri namanya dimana event handler yang akan dibuat nantinya harus sesuai dengan signature delegate diatas :

Public Class Order

Private Delegate Sub MyDelegateSub(ByVal Message As String)
Private Event MustBeGTZero As MyDelegateSub

Langkah berikutnya buat event handler nya. Ingat syarat diatas :

Public Class Order

Private Delegate Sub MyDelegateSub(ByVal Message As String)
Private Event MustBeGTZero As MyDelegateSub

Private Sub MustBeGTZeroHandler(ByVal Notification As String)
MsgBox(Notification)
End Sub

Signature event handler sama dengan delegate (berupa Sub dengan satu buah input parameter yang bertipe data string, untuk nama input parameternya ga harus sama).

Next step is, lakukan proses validasi pada Setter property. Disini kita harus lakukan assignment event handler dengan event secara run time, raise event, setelah itu disassociate event handler dengan eventnya, berikut code lengkapnya :

Public Class Order

Private Delegate Sub MyDelegateSub(ByVal Message As String)
Private Event MustBeGTZero As MyDelegateSub

Private Sub MustBeGTZeroHandler(ByVal Notification As String)
MsgBox(Notification)
End Sub

Private
mQty As Integer
Public Property
Quantity() As Integer
Get
Return
mQty
End Get
Set
(ByVal value As Integer)
If value <= 0 Then
AddHandler
MustBeGTZero, AddressOf MustBeGTZeroHandler
RaiseEvent MustBeGTZero("Input harus lebih besar dari Nol")
RemoveHandler MustBeGTZero, AddressOf MustBeGTZeroHandler
Else
mQty = value
End If
End Set
End Property

End Class

Untuk trigger event yang telah kita buat gunakan perintah RaiseEvent. Berikut contoh penggunaannya di aplikasi client :

Private Sub btnGetOrder_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles btnGetOrder.Click
Dim myOrder = New Order With {.Quantity = -1}
End Sub

Kembali saya menggunakan VB 9.0. Kode diatas menggabungkan fitur Local Type Inference dengan Object Initialization Expression. Screen shot nya seperti dibawah ini :

Happy Coding VB-ers !! ;)

 


[Comments]

deddy (Jan/08/2009 03:15:02)
mas ini berlaku juga untuk .net 2003 gak ya....???
Rully (Jan/08/2009 04:30:52)
Halo mas Deddy...ini berlaku untuk semua versi .net :)
Rully (Jan/08/2009 04:33:21)
@Deddy : O ya mas, kecuali syntax ini hanya berlaku di vb 9.0 : Dim myOrder = New Order With {.Quantity = -1}...code tersebut menggunakan fitur Local Type Inference dan Object Initialization Expression...kedua fitur tersebut ada artikelnya di web site ini :)

[Write your comment]

Name (required)

Email (required-will not published)

Comment
fogh
Input code above below (Case Sensitive) :

ABOUT ME

Rully Yulian MF
Rully Yulian Muhammad Firmansyah | Founder & IT Trainer Native Enterprise | MCT (2008-2019) | MVP (2009-2016) | Xamarin Certified Professional | MTA | MCAD | MCPD | MOS | Bandung, West Java, Indonesia.

[Read More...]

TOP DOWNLOAD

Mapping Hak Akses User Pada MenuStrip Sampai Control Button
downloaded 6983 times

Bagaimana caranya menginstal database ketika deploying sebuah aplikasi?
downloaded 4893 times

Simple Voice Engine Application With Sound Player Class...
downloaded 4045 times

Change Group,Sort Order, Filtering By Date in Crystal Reports
downloaded 3460 times

WinForms DataGrid Paging With SqlDataAdapter
downloaded 2881 times


LINKS

CERTIFICATIONS

Xamarin Certified
MOS 2007
MCT
MCPD
MCTS
MCAD.NET
ASP.NET Brainbench

NATIVE ENTERPRISE

Native Enterprise - IT Training

FOLLOW ME

Youtube  Facebook  Instagram  LinkedIn   Twitter

RSS


NATIVE ENTERPRISE NEWS

© Copyright 2006 - 2024   Rully Yulian MF   All rights reserved.