Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Visual Basic .NET'te kodluyorsanız, nesneye olay işleyicisi eklemek için dile özgü Handles anahtar sözcüğünü kullanabilirsiniz. Nesnesi arka planda kod içindeki bir örnek veya Genişletilebilir Uygulama biçimlendirme dili (XAML) içindeki bir öğe olabilir.
Handles ortak dil çalışma zamanı (CLR) olayları veya Windows Presentation Foundation (WPF) yönlendirilmiş olaylariçin olay işleyicileri atamak için kullanılabilir. Ancak, Handles, yönlendirilmiş olaylar için olay işleyicileri eklemek amacıyla kullanıldığında bazı kullanım sınırlamalarına sahiptir.
Önkoşullar
Makalede, yönlendirilen olaylar hakkında temel bilgilere sahip olduğunuz ve Yönlendirilen olaylara genel bakışmakalesini okuduğunuz varsayılır. Bu makaledeki örnekleri takip etmek için, Genişletilebilir Uygulama biçimlendirme dili (XAML) hakkında bilgi sahibi olmanız ve Windows Presentation Foundation (WPF) uygulamalarının nasıl yazıldığından haberdar olmanız yardımcı olur.
Sözdizimi
Sub anahtar sözcüğünü kullanan bir bildiriminin söz dizimi: Sub <procedure name> Handles <object name>.<event name>. Bu söz dizimi, <event name> tarafından belirtilen bir olay <object name>tarafından belirtilen bir nesnede tetiklendiğinde çalıştırılacak olay işleyicisi olarak bir yordam belirtir. Olay, nesnenin sınıfının veya temel sınıfının bir üyesi olmalıdır. Aşağıdaki örnekte, Handleskullanarak bir XAML öğesine olay işleyicisi ekleme gösterilmektedir.
' 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
Handles arka planda kodda tanımlanan bir nesneyle kullanmak için, genellikle WithEvents anahtar sözcüğüyle nesneyi tanımlarsınız.
WithEvents kullanımı hakkında daha fazla bilgi için bu örneklerinebakın. WPF, Friend WithEventskullanarak tüm XAML öğelerini otomatik olarak bildirir. Aşağıdaki örnekte, WithEventskullanılarak kod arkasında tanımlanan bir nesnenin nasıl bildirildiği gösterilmektedir.
' 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
Aynı işleyiciyi birden çok olay için kullanmak için <object name>.<event name> olayları virgülle ayırın. Örneğin, Sub Button_Click(sender As Object, e As RoutedEventArgs) Handles Button1.Click, Button2.Click. Virgülle ayrılmış olayların sırası önemsizdir.
Aynı olay için birden çok Handles deyimiyle farklı işleyiciler atayabilirsiniz.
Handles deyimlerinin sırası, olay gerçekleştiğinde işleyicilerin çağrılma sırasını belirlemez.
Tavsiye
Handlesile eklenen bir işleyiciyi kaldırmak için RemoveHandler'ı çağırabilirsiniz. Örneğin, RemoveHandler Button1.Click, AddressOf Button1_Click.
WPF uygulamasında 'Handles' kullanma
XAML'de tanımlanan bir nesne için handles olay söz dizimi <object name>.<event name>, nesneyi temsil eden XAML öğesinin Name veya x:Name özelliğine sahip olmasını gerektirir. Ancak, Meadını kullanabileceğiniz XAML sayfası kök öğesi için bir ad özelliği gerekli değildir. Aşağıdaki örnekte, Handleskullanarak bir XAML sayfası köküne olay işleyicisi ekleme gösterilmektedir.
' 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
Bir XAML sayfası derlendiğinde, Name veya x:Name parametresine sahip her XAML öğesi Friend WithEventsolarak bildirilir. Sonuç olarak, Handlesile herhangi bir XAML öğesini kullanabilirsiniz.
Tavsiye
Visual Studio IntelliSense, Handlesile kullanılabilecek nesneleri gösterir.
Handles, XAML öznitelik söz dizimini, AddHandler deyimini veya AddHandler yöntemini kullanarak olay işleyicisi eklemenize bakılmaksızın, olay sistemi davranışı aynıdır.
Uyarı
Aynı olay işleyicisini aynı olaya eklemek için hem XAML özniteliklerini hem de Handles kullanmayın, aksi takdirde olay işleyicisi her olay için iki kez çağrılır.
Sınırlamalar
Handles anahtar sözcüğü şu kullanım sınırlamalarına sahiptir:
Handlesyalnızca olay nesnenin sınıfının veya temel sınıfının üyesiyse bir nesneye olay işleyicisi eklemek için kullanabilirsiniz. Örneğin, temel sınıfıHandlesolan ve Click yönlendirilmiş olayını yükselten bir düğmeye ButtonBase olay işleyicisi eklemek içinClickkullanabilirsiniz. Ancak, yönlendirilmiş olayların özelliklerinden biri, öğe ağacını dolaşmalarıdır ve bu da bir olayıClickyükselten öğeden daha yüksek bir düzeyde dinlemeyi ve işlemeyi mümkün kılar. Ana öğenin dinleyip işlediği yönlendirilmiş bir olay, bir ekli olayolarak adlandırılır. söz dizimi, XAML öğesi ağacında olayı tetikleyen öğeden farklı bir dinleyici belirtmeyi desteklemediğindenHandlesekli olaylar için kullanılamaz. Ekli olaylar için olay işleyicileri atamak için XAML öznitelik söz dizimini veya AddHandler yöntemini kullanmanız gerekir. Ekli olaylar hakkında daha fazla bilgi için bkz.Ekli olaylara genel bakış ve WPF'de ekli olaylar. Handlessöz dizimi, Handled olaylar için olay işleyici çağrısını desteklemez. Olay işleyicinizinHandledolaylar için çağrılmasını sağlamak için, AddHandler(RoutedEvent, Delegate, Boolean) yöntemini kullanarak olay işleyicisini ekleyin vehandledEventsTooparametresinitrueolarak ayarlayın.
Ayrıca bakınız
.NET Desktop feedback