Udostępnij za pośrednictwem


Zdarzenia automatyzacji interfejsu użytkownika dla klientów

Uwaga / Notatka

Ta dokumentacja jest przeznaczona dla deweloperów programu .NET Framework, którzy chcą używać zarządzanych klas automatyzacji interfejsu użytkownika zdefiniowanych w przestrzeni nazw System.Windows.Automation. Aby uzyskać najnowsze informacje na temat automatyzacji interfejsu użytkownika, zobacz Windows Automation API: Automatyzacja interfejsu użytkownika.

W tym temacie opisano, jak zdarzenia automatyzacji interfejsu użytkownika firmy Microsoft są używane przez klientów automatyzacji interfejsu użytkownika.

Automatyzacja interfejsu użytkownika umożliwia klientom subskrybowanie interesujących zdarzeń. Ta funkcja zwiększa wydajność, eliminując potrzebę ciągłego sondowania wszystkich elementów interfejsu użytkownika w systemie, aby sprawdzić, czy jakiekolwiek informacje, struktura lub stan uległy zmianie.

Wydajność jest również lepsza dzięki możliwości nasłuchiwania zdarzeń tylko w zdefiniowanym zakresie. Na przykład klient może nasłuchiwać zdarzeń zmiany fokusu dla wszystkich elementów automatyzacji interfejsu użytkownika w drzewie lub tylko jednego elementu i jego elementów podrzędnych.

Uwaga / Notatka

Nie należy zakładać, że wszystkie możliwe zdarzenia są zgłaszane przez dostawcę automatyzacji interfejsu użytkownika firmy Microsoft. Na przykład nie wszystkie zmiany właściwości powodują wywoływanie zdarzeń przez standardowych dostawców proxy dla kontrolek Windows Forms i Win32.

Aby uzyskać szerszy widok zdarzeń automatyzacji interfejsu użytkownika, zobacz Omówienie zdarzeń automatyzacji interfejsu użytkownika.

Subskrybowanie zdarzeń

Aplikacje klienckie subskrybują zdarzenia określonego rodzaju, rejestrując procedurę obsługi zdarzeń przy użyciu jednej z następujących metod.

Metoda Typ zdarzenia Typ argumentów zdarzeń Typ delegata
AddAutomationFocusChangedEventHandler Zmiana fokusu AutomationFocusChangedEventArgs AutomationFocusChangedEventHandler
AddAutomationPropertyChangedEventHandler Zmiana własności AutomationPropertyChangedEventArgs AutomationPropertyChangedEventHandler
AddStructureChangedEventHandler Zmiana struktury StructureChangedEventArgs StructureChangedEventHandler
AddAutomationEventHandler Wszystkie inne zdarzenia zidentyfikowane przez element AutomationEvent AutomationEventArgs lub WindowClosedEventArgs AutomationEventHandler

Przed wywołaniem metody należy utworzyć metodę delegata do obsługi zdarzenia. Jeśli wolisz, możesz obsłużyć różne rodzaje zdarzeń w jednej metodzie i przekazać tę metodę w wielu wywołaniach do jednej z metod w tabeli. Na przykład można skonfigurować pojedynczy komponent AutomationEventHandler do obsługi różnych zdarzeń w różny sposób zgodnie z EventId.

Uwaga / Notatka

Aby przetworzyć zdarzenia związane z zamknięciem okna, należy rzutować typ argumentu przekazywanego do obsługującego zdarzenie jako WindowClosedEventArgs. Ponieważ element automatyzacji interfejsu użytkownika firmy Microsoft dla okna nie jest już prawidłowy, nie można użyć parametru sender do pobrania informacji; zamiast tego użyj polecenia GetRuntimeId .

Ostrzeżenie

Jeśli aplikacja może odbierać zdarzenia z własnego interfejsu użytkownika, nie używaj wątku interfejsu użytkownika aplikacji do subskrybowania zdarzeń ani anulowania subskrypcji. Może to prowadzić do nieprzewidywalnego zachowania. Aby uzyskać więcej informacji, zobacz Problemy z wątkami automatyzacji interfejsu użytkownika.

Po zamknięciu lub gdy zdarzenia automatyzacji interfejsu użytkownika nie są już interesujące dla aplikacji, klienci automatyzacji interfejsu użytkownika powinni wywołać jedną z następujących metod.

Metoda Opis
RemoveAutomationEventHandler Wyrejestrowuje procedurę obsługi zdarzeń zarejestrowaną przy użyciu polecenia AddAutomationEventHandler.
RemoveAutomationFocusChangedEventHandler Wyrejestrowuje procedurę obsługi zdarzeń zarejestrowaną przy użyciu polecenia AddAutomationFocusChangedEventHandler.
RemoveAutomationPropertyChangedEventHandler Wyrejestrowuje procedurę obsługi zdarzeń zarejestrowaną przy użyciu polecenia AddAutomationPropertyChangedEventHandler.
RemoveAllEventHandlers Wyrejestrowuje wszystkie zarejestrowane programy obsługi zdarzeń.

Na przykład kod można znaleźć w temacie Subskrybowanie zdarzeń automatyzacji interfejsu użytkownika.

Zobacz także