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.
Memicu peristiwa yang dideklarasikan pada tingkat modul dalam kelas, formulir, atau dokumen.
Sintaksis
RaiseEvent eventname[( argumentlist )]
Bagian
eventname
Dibutuhkan. Nama peristiwa yang akan dipicu.
argumentlist
Fakultatif. Daftar variabel, array, atau ekspresi yang dibatasi koma. Argumen argumentlist harus diapit oleh tanda kurung. Jika tidak ada argumen, tanda kurung harus dihilangkan.
Komentar
Yang diperlukan eventname adalah nama peristiwa yang dideklarasikan dalam modul. Ini mengikuti konvensi penamaan variabel Visual Basic.
Jika peristiwa belum dideklarasikan dalam modul tempat peristiwa dinaikkan, kesalahan terjadi. Fragmen kode berikut mengilustrasikan deklarasi peristiwa dan prosedur di mana peristiwa dinaikkan.
' Declare an event at module level.
Event LogonCompleted(ByVal UserName As String)
Sub Logon(ByVal UserName As String)
' Raise the event.
RaiseEvent LogonCompleted(UserName)
End Sub
Anda tidak dapat menggunakan RaiseEvent untuk menaikkan peristiwa yang tidak dideklarasikan secara eksplisit dalam modul. Misalnya, semua formulir mewarisi Click peristiwa dari System.Windows.Forms.Form, tidak dapat dinaikkan menggunakan RaiseEvent dalam bentuk turunan. Jika Anda mendeklarasikan Click peristiwa dalam modul formulir, peristiwa tersebut akan membayangi peristiwa formulir itu sendiri Click . Anda masih dapat memanggil peristiwa formulir Click dengan memanggil OnClick metode .
Secara default, peristiwa yang ditentukan di Visual Basic menaikkan penanganan aktivitasnya dalam urutan koneksi dibuat. Karena peristiwa dapat memiliki ByRef parameter, proses yang terhubung terlambat dapat menerima parameter yang telah diubah oleh penanganan aktivitas sebelumnya. Setelah penanganan aktivitas dijalankan, kontrol dikembalikan ke subroutine yang menaikkan peristiwa.
Nota
Peristiwa yang tidak dibagikan tidak boleh dimunculkan dalam konstruktor kelas tempat peristiwa tersebut dideklarasikan. Meskipun peristiwa tersebut tidak menyebabkan kesalahan run-time, peristiwa tersebut mungkin gagal ditangkap oleh penanganan aktivitas terkait. Gunakan pengubah Shared untuk membuat peristiwa bersama jika Anda perlu menaikkan peristiwa dari konstruktor.
Nota
Anda dapat mengubah perilaku default peristiwa dengan menentukan peristiwa kustom. Untuk peristiwa kustom, RaiseEvent pernyataan memanggil aksesor peristiwa RaiseEvent . Untuk informasi selengkapnya tentang peristiwa kustom, lihat Pernyataan Peristiwa.
Contoh 1
Contoh berikut menggunakan peristiwa untuk menghitung mundur detik dari 10 hingga 0. Kode ini menggambarkan beberapa metode, properti, dan pernyataan terkait peristiwa, 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 menunjukkan timer yang menghitung mundur dari 10 hingga 0 detik dan menampilkan kemajuan ke konsol. Setelah hitung mundur selesai, hitung mundur akan menampilkan "Selesai".
Deklarasikan WithEvents variabel di kelas Anda untuk menangani peristiwa dari timer:
Public Class TimerExample
Private WithEvents mTimer As TimerState
Contoh 2
Tambahkan kode berikut untuk mengimplementasikan penanganan aktivitas dan logika timer. Contoh ini menunjukkan cara menggunakan RaiseEvent pernyataan untuk memberi tahu penanganan aktivitas saat timer diperbarui atau selesai.
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
Saat Anda menjalankan contoh sebelumnya, contoh tersebut mulai menghitung mundur detik dari 10 hingga 0, menampilkan kemajuan ke konsol. Ketika waktu penuh (10 detik) telah berlalu, itu menampilkan "Selesai".