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 dinyatakan pada tingkat modul dalam kelas, formulir, atau dokumen.
Sintaks
RaiseEvent eventname[( argumentlist )]
Generator
eventname
Harus diisi. Nama peristiwa yang akan dipicu.
argumentlist
Opsional. Daftar variabel, array, atau ekspresi yang dibatasi koma. Argumen argumentlist
harus diapit oleh tanda kurung. Jika tidak ada argumen, tanda kurung akan dihilangkan.
Keterangan
eventname
yang wajib adalah nama peristiwa yang dinyatakan dalam modul. Ini mengikuti konvensi penamaan variabel Visual Basic.
Jika peristiwa belum dinyatakan dalam modul tempat peristiwa dimunculkan, akan terjadi kesalahan. Fragmen kode berikut mengilustrasikan deklarasi peristiwa dan prosedur tempat 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 dinyatakan secara eksplisit dalam modul. Misalnya, semua formulir mewarisi peristiwa Click dari System.Windows.Forms.Form, maka tidak dapat dinaikkan menggunakan RaiseEvent
dalam bentuk turunan. Jika Anda menyatakan peristiwa Click
dalam modul formulir, peristiwa tersebut akan membayangi peristiwa Click formulir itu sendiri. Anda masih dapat memanggil peristiwa Click formulir dengan memanggil metode OnClick.
Secara default, peristiwa yang ditentukan dalam Visual Basic meningkatkan penanganan aktivitasnya dalam urutan koneksi dibuat. Karena peristiwa dapat memiliki parameter ByRef
, proses yang terhubung terlambat mungkin menerima parameter yang telah diubah oleh penanganan aktivitas sebelumnya. Setelah penanganan aktivitas dijalankan, kontrol dikembalikan ke sub-rutin yang menaikkan peristiwa.
Catatan
Peristiwa yang tidak dibagikan tidak boleh dimunculkan dalam konstruktor kelas tempat peristiwa tersebut dinyatakan. 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.
Catatan
Anda dapat mengubah perilaku default peristiwa dengan menentukan peristiwa kustom. Untuk peristiwa kustom, RaiseEvent
pernyataan memanggil pengakses peristiwa tersebutRaiseEvent
. Untuk informasi selengkapnya tentang peristiwa kustom, lihat Pernyataan Peristiwa.
Contoh 1
Contoh berikut menggunakan peristiwa untuk menghitung mundur dalam hitungan detik dari 10 ke 0. Kode ini menggambarkan beberapa metode, properti, dan pernyataan yang terkait-peristiwa, termasuk pernyataan RaiseEvent
.
Kelas yang memunculkan peristiwa adalah sumber kejadian, dan metode yang memproses peristiwa adalah penanganan aktivitas. Sumber kejadian dapat memiliki beberapa penangan untuk peristiwa yang dihasilkan sumber kejadian. Ketika kelas memunculkan peristiwa, peristiwa tersebut dimunculkan pada setiap kelas yang telah memilih untuk menangani peristiwa untuk instans objek tersebut.
Contoh juga menggunakan formulir (Form1
) dengan tombol (Button1
) dan kotak teks (TextBox1
). Saat Anda mengklik tombol, kotak teks pertama menampilkan hitungan mundur dari 10 hingga 0 detik. Saat waktu penuh (10 detik) telah berlalu, kotak teks pertama menampilkan "Selesai".
Kode untuk Form1
menentukan status awal dan terminal dari formulir. Kode juga berisi kode yang dijalankan saat peristiwa dimunculkan.
Untuk menggunakan contoh ini, buka proyek Aplikasi Windows baru, tambahkan tombol bernama Button1
dan kotak teks bernama TextBox1
ke formulir utama, bernama Form1
. Kemudian klik kanan formulir dan klik Lihat Kode untuk membuka Editor Kode.
Tambahkan variabel WithEvents
ke bagian deklarasi kelas Form1
.
Private WithEvents mText As TimerState
Contoh 2
Tambahkan kode berikut ke kode untuk Form1
. Ganti prosedur duplikat yang mungkin ada, seperti Form_Load
atau Button_Click
.
Private Sub Form1_Load() Handles MyBase.Load
Button1.Text = "Start"
mText = New TimerState
End Sub
Private Sub Button1_Click() Handles Button1.Click
mText.StartCountdown(10.0, 0.1)
End Sub
Private Sub mText_ChangeText() Handles mText.Finished
TextBox1.Text = "Done"
End Sub
Private Sub mText_UpdateTime(ByVal Countdown As Double
) Handles mText.UpdateTime
TextBox1.Text = Format(Countdown, "##0.0")
' Use DoEvents to allow the display to refresh.
My.Application.DoEvents()
End Sub
Class TimerState
Public Event UpdateTime(ByVal Countdown As Double)
Public Event Finished()
Public Sub StartCountdown(ByVal Duration As Double,
ByVal Increment As Double)
Dim Start As Double = DateAndTime.Timer
Dim ElapsedTime As Double = 0
Dim SoFar As Double = 0
Do While ElapsedTime < Duration
If ElapsedTime > SoFar + Increment Then
SoFar += Increment
RaiseEvent UpdateTime(Duration - SoFar)
End If
ElapsedTime = DateAndTime.Timer - Start
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. Saat waktu penuh (10 detik) telah berlalu, kotak teks pertama menampilkan "Selesai".
Catatan
Metode My.Application.DoEvents
tidak memproses peristiwa dengan cara yang sama seperti yang dilakukan formulir. Untuk mengaktifkan formulir guna menangani peristiwa secara langsung, Anda dapat menggunakan pengaluran-jamak. Untuk informasi selengkapnya, lihat Alur Terkelola.