Sabtu, 21 Maret 2009

Memahami Event dan Event Handler

Visual Basic adalah sebuah bahasa pemrograman yang bersifat Event-Driven.

Event – sebuah kejadian yang dipicu oleh user. contohnya: user mengclick tombol, user memilih dari sebuah list, dan lain-lain.

Event Handler – sebuah prosedur yang digunakan untuk menangani event (kejadian) yang dipicu/dibangkitkan oleh user.

misalkan kita pny project dengan form seperti dibawah ini:

1 
code :

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        MessageBox.Show("You Click Button 1")
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        MessageBox.Show("You Click Button 2")
    End Sub

    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        MessageBox.Show("You Click Button 3")
    End Sub
End Class

arti (misalkan kita ambil contoh Button1_Click):

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        MessageBox.Show("You Click Button 1")
    End Sub

Handles Button1.Click (cetak warna biru) adalah event click yang akan dipicu ketika user melakukan aktivitas click terhadap Button1.

Event Handler berupa prosedur Button_Click (cetak warna pink) akan dijalankan untuk menangani Event Click yang dipicu oleh user tsb.

selain dengan cara diatas, kita jg diperbolehkan untuk menyatukan beberapa Event untuk dihandle dengan satu buah Event Handler. contoh diatas kalau kita tulis ulang dengan maksud seperti kalimat sebelumnya akan menjadi:

Private Sub EV_Handler(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click, Button3.Click
        Dim button As Button = DirectCast(sender, Button)
        Select Case button.Name.ToLower()
            Case "button1"
                MessageBox.Show("You Click Button 1")
            Case "button2"
                MessageBox.Show("You Click Button 2")
            Case "button3"
                MessageBox.Show("You Click Button 3")
        End Select
    End Sub

Catatan: nama prosedur (Event Handler – cetak warna biru) boleh bebas. DirectCast adalah fungsi yang digunakan untuk melakukan konversi tipe data secara eksplisit.

kita juga dapat menambah dan menghapus Event dan Event Handler pada saat run time.
misalkan form di atas kita ubah menjadi seperti di bawah ini:

image

kita akan modifikasi code yang ada menjadi seperti berikut ini:

1. buat dulu prosedur yang akan dijadikan sebagai event handler

Private Sub EV_Handler(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim button As Button = DirectCast(sender, Button)
        Select Case button.Name.ToLower()
            Case "button1"
                MessageBox.Show("You Click Button 1")
            Case "button2"
                MessageBox.Show("You Click Button 2")
            Case "button3"
                MessageBox.Show("You Click Button 3")
        End Select
    End Sub

2. pada tombol Add Handler, kita tambahkan Event Handler yang akan kita terapkan dalam program tsb. untuk menambahkan Event Handler ke suatu event, kita gunakan perintah AddHandler

Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        AddHandler Button1.Click, AddressOf EV_Handler
        AddHandler Button2.Click, AddressOf EV_Handler
        AddHandler Button3.Click, AddressOf EV_Handler
    End Sub

3. pada tombol Remove Handler, kita bisa menghapus kembali Event Handler yang sudah tidak kita gunakan lagi. untuk menghapus Event Handler, gunakan perintah RemoveHandler

Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
        RemoveHandler Button1.Click, AddressOf EV_Handler
        RemoveHandler Button2.Click, AddressOf EV_Handler
        RemoveHandler Button3.Click, AddressOf EV_Handler
    End Sub

ok, Selamat mencoba.

 

Rgds
Adi

1 komentar:

ADe ImuT mengatakan...

hheee....heeee.....

copy blognya lagi ya pak.....