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.
Peristiwa adalah tindakan atau kemunculan — seperti klik mouse atau batas kredit terlampaui — yang dikenali oleh beberapa komponen program, dan untuk itu Anda dapat menulis kode untuk merespons. Penangan peristiwa adalah kode yang Anda tulis untuk merespons peristiwa.
Di Visual Basic, ada dua sisi untuk bekerja dengan event:
- Event publishing — Kelas mendeklarasikan event dan memicunya ketika sesuatu yang menarik terjadi menggunakan Pernyataan RaiseEvent. Inilah yang sebenarnya memanggil pengendali acara.
-
Langganan peristiwa — Anda berlangganan peristiwa dengan mengidentifikasi prosedur sebagai penangan untuk peristiwa tertentu. Anda dapat melakukan ini baik dengan
Handlesklausul danWithEventsvariabel, atau dengan Pernyataan AddHandler.
Penangan kejadian dalam Visual Basic adalah sebuah prosedur Sub. Kode Anda tidak memanggilnya secara langsung seperti prosedur Sub lainnya. Sebaliknya, penerbit peristiwa memanggil prosedur ketika peristiwa terpicu karena prosedur berlangganan peristiwa tersebut.
Klausul Handles adalah cara default untuk berlangganan event di Visual Basic. Ini adalah bagaimana penanganan aktivitas ditulis oleh perancang ketika Anda memprogram di lingkungan pengembangan terintegrasi (IDE). Pernyataan AddHandler ini cocok untuk berlangganan event secara dinamis selama waktu proses eksekusi.
Ketika peristiwa terjadi, Visual Basic secara otomatis memanggil prosedur penanganan aktivitas. Kode apa pun yang memiliki akses ke peristiwa dapat menyebabkannya terjadi dengan menjalankan Pernyataan RaiseEvent.
Anda dapat mengaitkan lebih dari satu penanganan aktivitas dengan peristiwa yang sama. Dalam beberapa kasus, Anda dapat memisahkan pengelola (handler) dari suatu peristiwa. Untuk informasi selengkapnya, lihat Peristiwa.
Berlangganan ke acara menggunakan Handles dan WithEvents
Pastikan peristiwa dideklarasikan dengan Pernyataan Peristiwa.
Deklarasikan variabel objek pada tingkat modul atau kelas, menggunakan
WithEventskata kunci. KlausaAsuntuk variabel ini harus menentukan kelas yang menaikkan peristiwa.Dalam deklarasi prosedur penanganan
Subevent, tambahkanHandlesklausa yang menentukan variabelWithEventsdan nama event.Ketika peristiwa terjadi, Visual Basic secara otomatis memanggil
Subprosedur. Kode Anda dapat menggunakanRaiseEventpernyataan untuk menaikkan peristiwa dan memanggil semua handler berlangganan.Contoh berikut mendefinisikan peristiwa dan
WithEventsvariabel yang merujuk ke kelas yang menaikkan peristiwa. Prosedur penangananSubperistiwa menggunakan klausulHandlesuntuk menentukan kelas dan peristiwa yang ditanganinya.' Example showing event handling with Handles and WithEvents Public Class EventPublisher Public Event SomethingHappened() Public Sub CauseEvent() ' Raise the event when something interesting happens RaiseEvent SomethingHappened() End Sub End Class Public Class EventSubscriber ' Declare a WithEvents variable Dim WithEvents eventObj As New EventPublisher ' Handle the event using Handles clause Public Sub ProcessHappen() Handles eventObj.SomethingHappened ' Insert code to handle somethingHappened event. Console.WriteLine("Event handled using Handles clause!") End Sub Public Sub TriggerEvent() eventObj.CauseEvent() End Sub End Class
Berlangganan ke acara menggunakan AddHandler
Pastikan peristiwa dideklarasikan dengan
Eventperintah.Jalankan pernyataan AddHandler untuk menghubungkan prosedur penanganan
Subperistiwa secara dinamis dengan peristiwa.Ketika peristiwa terjadi, Visual Basic secara otomatis memanggil
Subprosedur. Kode Anda dapat menggunakan pernyataanRaiseEventuntuk memicu peristiwa dan memanggil semua pengolah yang berlangganan.Contoh berikut menggunakan pernyataan AddHandler di konstruktor untuk mengaitkan
OnTimerElapsedprosedur sebagai penanganan aktivitas untuk peristiwa timer kustom.' Example showing event handling with AddHandler Public Class Timer Public Event TimerElapsed(ByVal message As String) Public Sub Start() ' Simulate timer elapsed RaiseEvent TimerElapsed("Timer has elapsed!") End Sub End Class Public Class Application Private appTimer As New Timer() Sub New() ' Use AddHandler to dynamically associate event handler AddHandler appTimer.TimerElapsed, AddressOf OnTimerElapsed End Sub Private Sub OnTimerElapsed(ByVal message As String) ' Insert code to handle timer elapsed event Console.WriteLine($"Handling timer event: {message}") End Sub Public Sub StartTimer() appTimer.Start() End Sub End ClassAnda dapat memisahkan penanganan aktivitas dari peristiwa dengan menjalankan pernyataan RemoveHandler.