Pernyataan RaiseEvent

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.

Lihat juga