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.
Mendeklarasikan peristiwa yang ditentukan pengguna.
Sintaksis
[ <attrlist> ] [ accessmodifier ] _
[ Shared ] [ Shadows ] Event eventname[(parameterlist)] _
[ Implements implementslist ]
' -or-
[ <attrlist> ] [ accessmodifier ] _
[ Shared ] [ Shadows ] Event eventname As delegatename _
[ Implements implementslist ]
' -or-
[ <attrlist> ] [ accessmodifier ] _
[ Shared ] [ Shadows ] Custom Event eventname As delegatename _
[ Implements implementslist ]
[ <attrlist> ] AddHandler(ByVal value As delegatename)
[ statements ]
End AddHandler
[ <attrlist> ] RemoveHandler(ByVal value As delegatename)
[ statements ]
End RemoveHandler
[ <attrlist> ] RaiseEvent(delegatesignature)
[ statements ]
End RaiseEvent
End Event
Bagian
| Bagian | Deskripsi |
|---|---|
attrlist |
Fakultatif. Daftar atribut yang berlaku untuk kejadian ini. Beberapa atribut dipisahkan oleh koma. Anda harus mengapit Daftar Atribut dalam tanda kurung sudut ("<" dan ">"). |
accessmodifier |
Fakultatif. Menentukan kode apa yang dapat mengakses peristiwa. Dapat berupa salah satu hal berikut: - Publik—kode apa pun yang dapat mengakses elemen yang menyatakan dapat mengaksesnya. - Dilindungi—hanya kode dalam kelasnya atau kelas turunan yang dapat mengaksesnya. - Teman—hanya kode dalam rakitan yang sama yang dapat mengaksesnya. - Privat—hanya kode dalam elemen yang menyatakan dapat mengaksesnya. - Kode Khusus Teman yang dilindungi di kelas acara, kelas turunan, atau rakitan yang sama dapat mengaksesnya. - Kode privat khusus yang dilindungi di kelas peristiwa atau kelas turunan dalam rakitan yang sama dapat mengaksesnya. |
Shared |
Fakultatif. Menentukan bahwa peristiwa ini tidak terkait dengan instans kelas atau struktur tertentu. |
Shadows |
Fakultatif. Menunjukkan bahwa peristiwa ini mendeklarasikan ulang dan menyembunyikan elemen pemrograman bernama identik, atau serangkaian elemen yang kelebihan beban, di kelas dasar. Anda dapat membayangi segala jenis elemen yang dideklarasikan dengan jenis lain. Elemen bayangan tidak tersedia dari dalam kelas turunan yang membayanginya, kecuali dari tempat elemen bayangan tidak dapat diakses. Misalnya, jika Private elemen membayangi elemen kelas dasar, kode yang tidak memiliki izin untuk mengakses Private elemen mengakses elemen kelas dasar sebagai gantinya. |
eventname |
Dibutuhkan. Nama peristiwa; mengikuti konvensi penamaan variabel standar. |
parameterlist |
Fakultatif. Daftar variabel lokal yang mewakili parameter peristiwa ini. Anda harus mengapit Daftar Parameter dalam tanda kurung. |
Implements |
Fakultatif. Menunjukkan bahwa peristiwa ini mengimplementasikan peristiwa antarmuka. |
implementslist |
Diperlukan jika Implements disediakan. Daftar Sub prosedur yang sedang diimplementasikan. Beberapa prosedur dipisahkan oleh koma:implementedprocedure [ , implementedprocedure ... ] Masing-masing implementedprocedure memiliki sintaks dan bagian berikut:interface.definedname- interface -Diperlukan. Nama antarmuka yang berisi kelas atau struktur prosedur ini.- Definedname -Diperlukan. Nama yang prosedurnya ditentukan dalam interface. Ini tidak harus sama dengan name, nama yang digunakan prosedur ini untuk menerapkan prosedur yang ditentukan. |
Custom |
Dibutuhkan. Peristiwa yang dinyatakan sebagai Custom harus mendefinisikan aksesor , , RemoveHandlerdan RaiseEvent kustomAddHandler. |
delegatename |
Fakultatif. Nama delegasi yang menentukan tanda tangan penanganan aktivitas. |
AddHandler |
Dibutuhkan. Mendeklarasikan pengakses AddHandler , yang menentukan pernyataan yang akan dijalankan saat penanganan aktivitas ditambahkan, baik secara eksplisit dengan menggunakan AddHandler pernyataan atau secara implisit dengan menggunakan Handles klausul . |
End AddHandler |
Dibutuhkan.
AddHandler Menghentikan blok. |
value |
Dibutuhkan. Nama parameter |
RemoveHandler |
Dibutuhkan. Mendeklarasikan RemoveHandler pengakses, yang menentukan pernyataan yang akan dijalankan saat penanganan aktivitas dihapus menggunakan RemoveHandler pernyataan . |
End RemoveHandler |
Dibutuhkan.
RemoveHandler Menghentikan blok. |
RaiseEvent |
Dibutuhkan. Mendeklarasikan RaiseEvent pengakses, yang menentukan pernyataan yang akan dijalankan saat peristiwa dinaikkan menggunakan RaiseEvent pernyataan . Biasanya, ini memanggil daftar delegasi yang dikelola oleh AddHandlerRemoveHandler dan aksesor. |
End RaiseEvent |
Dibutuhkan.
RaiseEvent Menghentikan blok. |
delegatesignature |
Dibutuhkan. Daftar parameter yang cocok dengan parameter yang diperlukan oleh delegatename delegasi. Anda harus mengapit Daftar Parameter dalam tanda kurung. |
statements |
Fakultatif. Pernyataan yang berisi isi AddHandlermetode , RemoveHandler, dan RaiseEvent . |
End Event |
Dibutuhkan.
Event Menghentikan blok. |
Komentar
Setelah acara dideklarasikan, gunakan RaiseEvent pernyataan untuk menaikkan acara. Peristiwa umum mungkin dideklarasikan dan dimunculkan seperti yang ditunjukkan dalam fragmen berikut:
Public Class EventSource
' Declare an event.
Public Event LogonCompleted(ByVal UserName As String)
Sub CauseEvent()
' Raise an event on successful logon.
RaiseEvent LogonCompleted("AustinSteele")
End Sub
End Class
Nota
Anda dapat mendeklarasikan argumen peristiwa sama seperti argumen prosedur, dengan pengecualian berikut: peristiwa tidak boleh memiliki argumen, ParamArray argumen, atau Optional argumen bernama. Peristiwa tidak memiliki nilai pengembalian.
Untuk menangani peristiwa, Anda harus mengaitkannya dengan subroutine penanganan aktivitas menggunakan Handles pernyataan atau AddHandler . Tanda tangan subroutine dan peristiwa harus cocok. Untuk menangani peristiwa bersama, Anda harus menggunakan pernyataan tersebut AddHandler .
Anda hanya dapat menggunakan Event pada tingkat modul. Ini berarti konteks deklarasi untuk suatu peristiwa harus berupa kelas, struktur, modul, atau antarmuka, dan tidak dapat menjadi file sumber, namespace, prosedur, atau blok. Untuk informasi selengkapnya, lihat Konteks Deklarasi dan Tingkat Akses Bawaan.
Dalam kebanyakan keadaan, Anda dapat menggunakan sintaks pertama di bagian Sintaks dari topik ini untuk mendeklarasikan peristiwa. Namun, beberapa skenario mengharuskan Anda memiliki kontrol lebih atas perilaku terperinci peristiwa. Sintaks terakhir di bagian Sintaks dari topik ini, yang menggunakan kata kunci, menyediakan kontrol tersebut Custom dengan memungkinkan Anda menentukan peristiwa kustom. Dalam peristiwa kustom, Anda menentukan dengan tepat apa yang terjadi saat kode menambahkan atau menghapus penanganan aktivitas ke atau dari peristiwa, atau saat kode menaikkan peristiwa. Misalnya, lihat Cara: Mendeklarasikan Peristiwa Kustom Untuk Menghemat Memori dan Cara: Mendeklarasikan Peristiwa Kustom Untuk Menghindari Pemblokiran.
Contoh
Contoh berikut menggunakan peristiwa untuk menghitung mundur detik dari 10 hingga 0. Kode ini mengilustrasikan beberapa metode, properti, dan pernyataan terkait peristiwa. Ini termasuk RaiseEvent pernyataan.
Kelas yang menaikkan peristiwa adalah sumber peristiwa, dan metode yang memproses peristiwa adalah penanganan aktivitas. Sumber peristiwa dapat memiliki beberapa handler untuk peristiwa yang dihasilkannya. Saat kelas menaikkan acara, peristiwa tersebut dinaikkan pada setiap kelas yang telah dipilih untuk menangani peristiwa untuk instans objek tersebut.
Contoh ini juga menggunakan formulir (Form1) dengan tombol (Button1) dan kotak teks (TextBox1). Saat Anda mengklik tombol , kotak teks pertama menampilkan hitung mundur dari 10 hingga 0 detik. Ketika waktu penuh (10 detik) telah berlalu, kotak teks pertama menampilkan "Selesai".
Kode untuk Form1 menentukan status awal dan terminal formulir. Ini juga berisi kode yang dijalankan ketika peristiwa dinaikkan.
Untuk menggunakan contoh ini, buka proyek Windows Forms baru. Kemudian tambahkan tombol bernama Button1 dan kotak teks bernama TextBox1 ke formulir utama, bernama Form1. Kemudian klik kanan formulir dan klik Tampilkan Kode untuk membuka editor kode.
WithEvents Tambahkan variabel ke bagian deklarasi kelasForm1:
Public Class TimerExample
Private WithEvents mTimer As TimerState
Tambahkan kode berikut ke kode untuk Form1. Ganti prosedur duplikat apa pun yang mungkin ada, seperti Form_Load atau Button_Click.
Public Sub StartCountdownExample()
mTimer = New TimerState()
mTimer.StartCountdown(10.0, 1.0)
End Sub
Private Sub mTimer_UpdateTime(ByVal Countdown As Double) Handles mTimer.UpdateTime
Console.WriteLine("Time remaining: " & Format(Countdown, "##0.0") & " seconds")
End Sub
Private Sub mTimer_Finished() Handles mTimer.Finished
Console.WriteLine("Done")
End Sub
End Class
Public Class TimerState
Public Event UpdateTime(ByVal Countdown As Double)
Public Event Finished()
Public Sub StartCountdown(ByVal Duration As Double,
ByVal Increment As Double)
Dim SoFar As Double = 0
Do While SoFar < Duration
System.Threading.Thread.Sleep(CInt(Increment * 1000))
SoFar += Increment
RaiseEvent UpdateTime(Duration - SoFar)
Loop
RaiseEvent Finished()
End Sub
End Class
Tekan F5 untuk menjalankan contoh sebelumnya, dan klik tombol berlabel Mulai. Kotak teks pertama mulai menghitung mundur detik. Ketika waktu penuh (10 detik) telah berlalu, kotak teks pertama menampilkan "Selesai".
Nota
Metode My.Application.DoEvents ini tidak memproses peristiwa dengan cara yang sama seperti formulir. Untuk mengaktifkan formulir untuk menangani peristiwa secara langsung, Anda dapat menggunakan multithreading. Untuk informasi selengkapnya, lihat Utas Terkelola.