Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Meskipun Anda mungkin memvisualisasikan proyek Visual Studio sebagai serangkaian prosedur yang dijalankan secara berurutan, pada kenyataannya, sebagian besar program didorong peristiwa—yang berarti alur eksekusi ditentukan oleh kemunculan eksternal yang disebut peristiwa.
Peristiwa adalah sinyal yang menginformasikan aplikasi bahwa sesuatu yang penting telah terjadi. Misalnya, saat pengguna mengklik kontrol pada formulir, formulir dapat memicu event Click dan memanggil prosedur yang menangani event tersebut. Peristiwa juga memungkinkan tugas-tugas yang terpisah untuk berkomunikasi. Misalnya, aplikasi Anda melakukan tugas pengurutan secara terpisah dari aplikasi utama. Jika pengguna membatalkan pengurutan, aplikasi Anda dapat mengirim peristiwa pembatalan yang menginstruksikan proses pengurutan untuk berhenti.
Istilah dan Konsep Acara
Bagian ini menjelaskan istilah dan konsep yang digunakan dengan peristiwa di Visual Basic.
Mendeklarasikan Peristiwa
Anda mendeklarasikan peristiwa dalam kelas, struktur, modul, dan antarmuka menggunakan Event kata kunci, seperti dalam contoh berikut:
Event AnEvent(ByVal EventNumber As Integer)
Memunculkan Peristiwa
Peristiwa seperti pesan yang mengumumkan bahwa sesuatu yang penting telah terjadi. Tindakan menyiarkan pesan disebut mengumumkan peristiwa. Di Visual Basic, Anda menghasilkan peristiwa dengan RaiseEvent pernyataan, seperti pada contoh berikut:
RaiseEvent AnEvent(EventNumber)
Peristiwa harus dimunculkan dalam cakupan kelas, modul, atau struktur tempat peristiwa dideklarasikan. Misalnya, kelas turunan tidak dapat memunculkan peristiwa yang diwarisi dari kelas dasar.
Pengirim Acara
Objek apa pun yang mampu menaikkan peristiwa adalah pengirim peristiwa, juga dikenal sebagai sumber peristiwa. Formulir, kontrol, dan objek yang ditentukan pengguna adalah contoh pengirim peristiwa.
Pengendali Acara
Penanganan aktivitas adalah prosedur yang dipanggil ketika peristiwa yang sesuai terjadi. Anda dapat menggunakan subroutine yang valid dengan tanda tangan yang cocok sebagai penanganan aktivitas. Namun, Anda tidak dapat menggunakan fungsi sebagai penanganan aktivitas karena tidak dapat mengembalikan nilai ke sumber peristiwa.
Visual Basic menggunakan konvensi penamaan standar untuk penanganan aktivitas yang menggabungkan nama pengirim peristiwa, garis bawah, dan nama peristiwa. Misalnya, Click peristiwa tombol bernama button1 akan diberi nama Sub button1_Click.
Nota
Kami menyarankan agar Anda menggunakan konvensi penamaan ini saat menentukan penanganan aktivitas untuk peristiwa Anda sendiri, tetapi tidak diperlukan; Anda dapat menggunakan nama subroutine yang valid.
Mengaitkan Peristiwa dengan Pengelola Peristiwa
Sebelum pengendali acara dapat digunakan, Anda harus terlebih dahulu mengaitkannya dengan acara dengan menggunakan pernyataan Handles atau AddHandler.
WithEvents dan Klausul Handles
Pernyataan WithEvents dan Handles klausa menyediakan cara deklaratif untuk menentukan penanganan aktivitas. Peristiwa yang dimunculkan oleh objek yang dideklarasikan dengan WithEvents kata kunci dapat ditangani oleh prosedur apa pun dengan Handles pernyataan untuk peristiwa tersebut, seperti yang ditunjukkan dalam contoh berikut:
' Declare a WithEvents variable.
Dim WithEvents EClass As New EventClass
' Call the method that raises the object's events.
Sub TestEvents()
EClass.RaiseEvents()
End Sub
' Declare an event handler that handles multiple events.
Sub EClass_EventHandler() Handles EClass.XEvent, EClass.YEvent
MsgBox("Received Event.")
End Sub
Class EventClass
Public Event XEvent()
Public Event YEvent()
' RaiseEvents raises both events.
Sub RaiseEvents()
RaiseEvent XEvent()
RaiseEvent YEvent()
End Sub
End Class
Pernyataan WithEvents dan Handles klausul sering kali menjadi pilihan terbaik untuk penanganan aktivitas karena sintaks deklaratif yang mereka gunakan membuat penanganan peristiwa lebih mudah dikodekan, dibaca, dan di-debug. Namun, perhatikan batasan berikut pada penggunaan WithEvents variabel:
Anda tidak dapat menggunakan
WithEventsvariabel sebagai variabel objek. Artinya, Anda tidak dapat menyatakannya sebagaiObject—Anda harus menentukan nama kelas saat Anda mendeklarasikan variabel.Karena peristiwa bersama tidak terkait dengan instans kelas, Anda tidak dapat menggunakan
WithEventsuntuk menangani peristiwa bersama secara deklaratif. Demikian pula, Anda tidak dapat menggunakanWithEventsatauHandlesuntuk menangani peristiwa dariStructure. Dalam kedua kasus, Anda dapat menggunakan pernyataanAddHandleruntuk menangani peristiwa tersebut.Anda tidak dapat membuat array variabel
WithEvents.
WithEvents variabel memungkinkan penanganan aktivitas tunggal untuk menangani satu atau beberapa jenis peristiwa, atau satu atau beberapa penanganan aktivitas untuk menangani jenis peristiwa yang sama.
Handles Meskipun klausul adalah cara standar untuk mengaitkan acara dengan penanganan aktivitas, klausul tersebut terbatas pada mengaitkan peristiwa dengan penanganan aktivitas pada waktu kompilasi.
Dalam beberapa kasus, seperti dengan peristiwa yang terkait dengan formulir atau kontrol, Visual Basic secara otomatis mengeluarkan penanganan aktivitas kosong dan mengaitkannya dengan peristiwa. Misalnya, saat Anda mengklik dua kali tombol perintah pada formulir dalam mode desain, Visual Basic membuat penanganan aktivitas kosong dan WithEvents variabel untuk tombol perintah, seperti dalam kode berikut:
Friend WithEvents Button1 As System.Windows.Forms.Button
Protected Sub Button1_Click() Handles Button1.Click
End Sub
AddHandler dan RemoveHandler
Pernyataan AddHandler mirip dengan klausul Handles yang memungkinkan Anda menentukan penanganan kejadian. Namun, AddHandler, digunakan dengan RemoveHandler, memberikan fleksibilitas yang lebih besar daripada Handles klausul, memungkinkan Anda untuk menambahkan, menghapus, dan mengubah penanganan aktivitas yang terkait dengan peristiwa secara dinamis. Jika Anda ingin menangani peristiwa bersama atau acara dari struktur, Anda harus menggunakan AddHandler.
AddHandler mengambil dua argumen: nama peristiwa dari pengirim peristiwa seperti kontrol, dan ekspresi yang mengevaluasi ke delegasi. Anda tidak perlu secara eksplisit menentukan kelas delegasi saat menggunakan AddHandler, karena AddressOf pernyataan selalu mengembalikan referensi ke delegasi. Contoh berikut mengaitkan penanganan aktivitas dengan peristiwa yang dimunculkan oleh objek:
AddHandler Obj.XEvent, AddressOf Me.XEventHandler
RemoveHandler, yang memutuskan koneksi peristiwa dari penanganan aktivitas, menggunakan sintaks yang sama dengan AddHandler. Contohnya:
RemoveHandler Obj.XEvent, AddressOf Me.XEventHandler
Dalam contoh berikut, penanganan aktivitas dikaitkan dengan peristiwa, dan peristiwa dinaikkan. Penangan kejadian menangani kejadian dan menampilkan pesan.
Kemudian penanganan peristiwa pertama dihapus dan penanganan peristiwa yang berbeda dikaitkan dengan peristiwa tersebut. Saat peristiwa dinaikkan lagi, pesan yang berbeda akan ditampilkan.
Terakhir, penanganan aktivitas kedua dihapus dan peristiwa dinaikkan untuk ketiga kalinya. Karena tidak ada lagi penanganan aktivitas yang terkait dengan peristiwa, tidak ada tindakan yang diambil.
Module Module1
Sub Main()
Dim c1 As New Class1
' Associate an event handler with an event.
AddHandler c1.AnEvent, AddressOf EventHandler1
' Call a method to raise the event.
c1.CauseTheEvent()
' Stop handling the event.
RemoveHandler c1.AnEvent, AddressOf EventHandler1
' Now associate a different event handler with the event.
AddHandler c1.AnEvent, AddressOf EventHandler2
' Call a method to raise the event.
c1.CauseTheEvent()
' Stop handling the event.
RemoveHandler c1.AnEvent, AddressOf EventHandler2
' This event will not be handled.
c1.CauseTheEvent()
End Sub
Sub EventHandler1()
' Handle the event.
MsgBox("EventHandler1 caught event.")
End Sub
Sub EventHandler2()
' Handle the event.
MsgBox("EventHandler2 caught event.")
End Sub
Public Class Class1
' Declare an event.
Public Event AnEvent()
Sub CauseTheEvent()
' Raise an event.
RaiseEvent AnEvent()
End Sub
End Class
End Module
Menangani Peristiwa yang Diwariskan dari Kelas Dasar
Kelas turunan—kelas yang mewarisi karakteristik dari kelas dasar—dapat menangani peristiwa yang diangkat oleh kelas dasar mereka menggunakan Handles MyBase pernyataan .
Untuk menangani peristiwa dari kelas dasar
Deklarasikan penanganan aktivitas di kelas turunan
Handles MyBase.dengan menambahkan pernyataan nama peristiwa ke baris deklarasi prosedur penanganan aktivitas Anda, di mana nama peristiwa adalah nama peristiwa di kelas dasar yang Anda tangani. Contohnya:Public Class BaseClass Public Event BaseEvent(ByVal i As Integer) ' Place methods and properties here. End Class Public Class DerivedClass Inherits BaseClass Sub EventHandler(ByVal x As Integer) Handles MyBase.BaseEvent ' Place code to handle events from BaseClass here. End Sub End Class
Bagian Terkait
| Judul | Deskripsi |
|---|---|
| Panduan: Mendeklarasikan dan Mengaktifkan Acara | Memberikan deskripsi langkah demi langkah tentang cara mendeklarasikan dan mengaktifkan peristiwa untuk kelas. |
| Panduan Langkah-demi-Langkah: Menangani Acara | Menunjukkan cara menulis prosedur penanganan aktivitas. |
| Cara: Mendeklarasikan Peristiwa Kustom Untuk Menghindari Pemblokiran | Menunjukkan cara menentukan peristiwa kustom yang memungkinkan penanganan aktivitasnya dipanggil secara asinkron. |
| Cara: Mendeklarasikan Peristiwa Kustom Untuk Menghemat Memori | Menunjukkan cara menentukan peristiwa kustom yang hanya menggunakan memori saat peristiwa ditangani. |
| Pemecahan Masalah Pengendali Acara yang Diwariskan di Visual Basic | Mencantumkan masalah umum yang muncul dengan penanganan aktivitas dalam komponen yang diwariskan. |
| Peristiwa | Memberikan gambaran umum model peristiwa di .NET Framework. |
| Membuat Pengendali Acara di Windows Forms | Menjelaskan cara bekerja dengan peristiwa yang terkait dengan objek Windows Forms. |
| Delegasi | Menyediakan gambaran umum delegasi di Visual Basic. |