Udostępnij za pośrednictwem


Obsługa zdarzeń Visual Basic oraz WPF

W przypadku języka .NET języka Microsoft Visual Basic możesz użyć słowa kluczowego specyficznego dla Handles języka, aby skojarzyć programy obsługi zdarzeń z wystąpieniami, zamiast dołączać programy obsługi zdarzeń z atrybutami lub przy użyciu AddHandler metody . Handles Jednak technika dołączania programów obsługi do wystąpień ma pewne ograniczenia, ponieważ składnia Handles nie może obsługiwać niektórych specyficznych funkcji zdarzeń kierowanych w systemie zdarzeń WPF.

Używanie "dojść" w aplikacji WPF

Programy obsługi zdarzeń połączone z wystąpieniami i zdarzeniami Handles muszą być zdefiniowane w częściowej deklaracji klasy wystąpienia, co jest również wymaganiem dla programów obsługi zdarzeń przypisanych za pomocą wartości atrybutów w elementach. Można określić Handles tylko dla elementu na stronie, który ma Name wartość właściwości (lub x:Name Dyrektywa zadeklarowana). Jest to spowodowane tym, że element Name w języku XAML tworzy odwołanie do wystąpienia, które jest niezbędne do obsługi formatu odwołania Instance.Event wymaganego przez składnię Handles . Jedynym elementem, który może być używany bez Handles odwołania, jest wystąpienie elementu root, które definiuje klasę Name częściową.

Tę samą procedurę obsługi można przypisać do wielu elementów, oddzielając odwołania Instance.Event po przecinkami Handles .

Można użyć Handles polecenia , aby przypisać więcej niż jedną procedurę obsługi do tego samego odwołania Instance.Event. Nie przypisuj żadnej ważności do kolejności, w której programy obsługi są podane w Handles odwołaniu. Należy założyć, że programy obsługi obsługujące to samo zdarzenie mogą być wywoływane w dowolnej kolejności.

Aby usunąć procedurę obsługi, która została dodana Handles w deklaracji , możesz wywołać metodę RemoveHandler.

Można użyć Handles do dołączania programów obsługi dla zdarzeń kierowanych, o ile dołączasz programy obsługi do wystąpień, które definiują zdarzenie obsługiwane w tabelach elementów członkowskich. W przypadku zdarzeń kierowanych programy obsługi dołączone za pomocą Handles tych samych reguł routingu co programy obsługi dołączone jako atrybuty XAML lub ze wspólnym podpisem AddHandler. Oznacza to, że jeśli zdarzenie jest już oznaczone ( Handled właściwość w danych zdarzenia to True), programy obsługi dołączone Handles do elementu nie są wywoływane w odpowiedzi na to wystąpienie zdarzenia. Zdarzenie może być oznaczone przez programy obsługi wystąpień w innym elemencie trasy lub przez obsługę klas w bieżącym elemencie lub wcześniejszych elementach wzdłuż trasy. W przypadku zdarzeń wejściowych, które obsługują sparowane zdarzenia tunelu/bąbelka, trasa tunelowania mogła oznaczyć obsłużoną parę zdarzeń. Aby uzyskać więcej informacji na temat zdarzeń kierowanych, zobacz Routed Events Overview (Przegląd zdarzeń trasowanych).

Ograniczenia dotyczące "dojść" do dodawania programów obsługi

Handles program nie może odwoływać się do programów obsługi dołączonych zdarzeń. Należy użyć add metody dostępu dla tego dołączonego zdarzenia lub atrybutów zdarzenia typename.eventname w języku XAML. Aby uzyskać szczegółowe informacje, zobacz Omówienie zdarzeń trasowanych.

W przypadku zdarzeń kierowanych można użyć Handles tylko do przypisywania programów obsługi dla wystąpień, w których to zdarzenie istnieje w tabeli składowych wystąpień. Jednak w przypadku zdarzeń kierowanych ogólnie element nadrzędny może być odbiornikiem zdarzenia z elementów podrzędnych, nawet jeśli element nadrzędny nie ma tego zdarzenia w tabeli elementów członkowskich. W składni atrybutu można to określić za pomocą formularza atrybutu typename.membername , który kwalifikuje typ faktycznie definiuje zdarzenie, które chcesz obsłużyć. Na przykład element nadrzędny Page (bez Click zdefiniowanego zdarzenia) może nasłuchiwać zdarzeń kliknięcia przycisku, przypisując program obsługi atrybutów w formularzu Button.Click. Nie obsługuje jednak Handles formularza typename.membername, ponieważ musi obsługiwać formularz Instance.Event powodujący konflikt. Aby uzyskać szczegółowe informacje, zobacz Omówienie zdarzeń trasowanych.

Handles Program nie może dołączyć programów obsługi wywoływanych dla zdarzeń, które są już oznaczone jako obsługiwane. Zamiast tego należy użyć kodu i wywołać handledEventsToo przeciążenie elementu AddHandler(RoutedEvent, Delegate, Boolean).

Uwaga

Nie używaj Handles składni w kodzie Visual Basic podczas określania programu obsługi zdarzeń dla tego samego zdarzenia w języku XAML. W takim przypadku program obsługi zdarzeń jest wywoływany dwukrotnie.

Jak WPF implementuje funkcję "handles"

Po skompilowaniu strony Extensible Application Markup Language (XAML) plik pośredni deklaruje Friend WithEvents odwołania do każdego elementu na stronie, który ma Name zestaw właściwości (lub x:Name Dyrektywa zadeklarowana). Każde nazwane wystąpienie jest potencjalnie elementem, który można przypisać do programu obsługi za pośrednictwem programu Handles.

Uwaga

W programie Visual Studio funkcja IntelliSense może wyświetlać uzupełnianie elementów dostępnych dla Handles odwołania na stronie. Może to jednak zająć jedno przekazanie kompilacji, aby plik pośredni mógł wypełnić wszystkie Friends odwołania.

Zobacz też