Bagikan melalui


Pernyataan RaiseEvent

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".

Lihat juga