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.
Jika Anda mengkoding di Visual Basic .NET, Anda dapat menggunakan kata kunci Handles khusus bahasa untuk melampirkan penanganan aktivitas ke objek. Objek dapat merupakan instans di code-behind atau elemen dalam Extensible Application Markup Language (XAML).
Handles dapat digunakan untuk menetapkan penangan acara untuk peristiwa common language runtime (CLR) atau peristiwa yang dirutekan Windows Presentation Foundation (WPF) . Namun, Handles memiliki beberapa batasan penggunaan saat digunakan untuk melampirkan penanganan aktivitas untuk peristiwa yang dirutekan.
Prasyarat
Artikel ini mengasumsikan pengetahuan dasar tentang event yang dirutekan, dan bahwa Anda telah membaca Gambaran Umum Event yang Dirutekan. Untuk mengikuti contoh dalam artikel ini, ini membantu jika Anda terbiasa dengan Extensible Application Markup Language (XAML) dan tahu cara menulis aplikasi Windows Presentation Foundation (WPF).
Sintaksis
Sintaks untuk deklarasi <event name> dinaikkan pada objek yang ditentukan oleh <object name>. Peristiwa harus menjadi anggota kelas objek atau kelas dasar. Contoh berikut menunjukkan cara melampirkan penanganan aktivitas ke elemen XAML menggunakan Handles.
' Click event handler attached to XamlButton using Handles.
Private Sub XamlButton_Click(sender As Object, e As RoutedEventArgs) Handles XamlButton.Click
' Handler logic.
Debug.WriteLine($"Click event handler attached to XamlButton using Handles.")
End Sub
Untuk menggunakan Handles dengan objek yang ditentukan dalam code-behind, biasanya Anda mendeklarasikan objek menggunakan kata kunci WithEvents. Untuk informasi selengkapnya tentang penggunaan WithEvents, lihat contoh ini. WPF secara otomatis mendeklarasikan semua elemen XAML menggunakan Friend WithEvents. Contoh berikut menunjukkan cara mendeklarasikan objek yang ditentukan dalam kode di belakang menggunakan WithEvents.
' Declare a new button using WithEvents.
Dim WithEvents CodeButton As New Button With {
.Content = "New button",
.Background = Brushes.Yellow
}
' Click event handler attached to CodeButton using Handles.
Private Sub CodeButton_Click(sender As Object, e As RoutedEventArgs) Handles CodeButton.Click
' Handler logic.
Debug.WriteLine($"Click event handler attached to CodeButton using Handles.")
End Sub
Untuk menggunakan handler yang sama untuk beberapa peristiwa, pisahkan peristiwa <object name>.<event name> dengan koma. Contohnya, Sub Button_Click(sender As Object, e As RoutedEventArgs) Handles Button1.Click, Button2.Click. Urutan peristiwa yang dipisahkan koma tidak bersifat immaterial.
Anda dapat menetapkan handler yang berbeda untuk peristiwa yang sama dengan beberapa pernyataan Handles. Urutan pernyataan Handles tidak menentukan urutan di mana handler dipanggil saat peristiwa terjadi.
Petunjuk / Saran
Untuk menghapus handler yang ditambahkan dengan Handles, panggil RemoveHandler. Contohnya, RemoveHandler Button1.Click, AddressOf Button1_Click.
Menggunakan 'Handles' dalam aplikasi WPF
Untuk objek yang ditentukan dalam XAML, sintaks peristiwa Handles<object name>.<event name> memerlukan elemen XAML yang mewakili objek untuk memiliki properti Name atau x:Name. Namun, properti nama tidak diperlukan untuk elemen akar halaman XAML, yang dapat Anda gunakan nama Me. Contoh berikut menunjukkan cara melampirkan penanganan aktivitas ke akar halaman XAML menggunakan Handles.
' Loaded event handler attached to the XAML page root using Handles.
Private Sub Window_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
' Handler logic.
Debug.WriteLine($"Loaded event handler attached to Window using Handles.")
End Sub
Ketika halaman XAML dikompilasi, setiap elemen XAML dengan parameter Name atau x:Name dinyatakan sebagai Friend WithEvents. Akibatnya, Anda dapat menggunakan elemen XAML apa pun dengan Handles.
Petunjuk / Saran
Visual Studio IntelliSense menampilkan objek yang dapat digunakan dengan Handles.
Terlepas dari apakah Anda melampirkan penanganan aktivitas menggunakan
Nota
Jangan gunakan atribut XAML dan Handles untuk melampirkan penanganan aktivitas yang sama ke peristiwa yang sama, jika tidak, penanganan aktivitas akan dipanggil dua kali untuk setiap peristiwa.
Keterbatasan
Kata kunci Handles memiliki batasan penggunaan ini:
Anda hanya dapat menggunakan
Handlesuntuk melampirkan penanganan aktivitas ke objek jika peristiwa tersebut adalah anggota kelas objek atau kelas dasar. Misalnya, Anda dapat menggunakanHandlesuntuk melampirkan penanganan aktivitas Click ke tombol yang kelas dasarnya ButtonBase menaikkan peristiwa yang dirutekanClick. Namun, salah satu fitur peristiwa yang dirutekan adalah bahwa mereka melintasi hirarki elemen, yang memungkinkan untuk mendengarkan dan menangani peristiwaClickpada tingkat yang lebih tinggi daripada elemen yang memicunya. Peristiwa yang dirutekan yang didengarkan dan ditangani elemen induk disebut peristiwa terlampir .Handlestidak dapat digunakan untuk peristiwa terlampir karena sintaksnya tidak mendukung pendengar yang berbeda di pohon elemen XAML daripada elemen yang memunculkan peristiwa. Untuk menetapkan penanganan aktivitas untuk peristiwa terlampir, Anda harus menggunakan sintaks atribut XAML atau metode AddHandler. Untuk informasi selengkapnya tentang peristiwa terlampir, lihat gambaran umum peristiwa terlampir dan peristiwa terlampir di WPF.sintaks
Handlestidak mendukung pemanggilan penanganan aktivitas untuk peristiwa Handled. Untuk memungkinkan penanganan aktivitas Anda dipanggil untuk peristiwaHandled, lampirkan penanganan aktivitas menggunakan metode AddHandler(RoutedEvent, Delegate, Boolean) dan atur parameterhandledEventsTooketrue.
Lihat juga
.NET Desktop feedback