Implementacja wzorca kontrolki wywołania automatyzacji interfejsu użytkownika

Uwaga

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

W tym temacie przedstawiono wytyczne i konwencje implementacji IInvokeProvider, w tym informacje o zdarzeniach i właściwościach. Linki do dodatkowych odwołań znajdują się na końcu tematu.

Wzorzec InvokePattern kontrolki jest używany do obsługi kontrolek, które nie obsługują stanu po aktywowaniu, ale raczej inicjują lub wykonują pojedynczą, jednoznaczną akcję. Kontrolki, które utrzymują stan, takie jak pola wyboru i przyciski radiowe, muszą zamiast tego implementować IToggleProvider i ISelectionItemProvider odpowiednio. Przykłady kontrolek implementujących wzorzec kontrolek Invoke można znaleźć w temacie Control Pattern Mapping for automatyzacja interfejsu użytkownika Clients (Mapowanie wzorca kontrolki dla klientów automatyzacja interfejsu użytkownika).

Wytyczne i konwencje implementacji

Podczas implementowania wzorca kontrolki Wywołaj należy pamiętać o następujących wytycznych i konwencjach:

  • Kontrolki implementują IInvokeProvider , jeśli to samo zachowanie nie jest widoczne za pośrednictwem innego dostawcy wzorca sterowania. Jeśli na przykład Invoke metoda w kontrolce wykonuje tę samą akcję co Expand metoda or Collapse , kontrolka nie powinna implementować IInvokeProvidermetody .

  • Wywoływanie kontrolki jest zwykle wykonywane przez kliknięcie lub dwukrotne kliknięcie lub naciśnięcie klawisza ENTER, wstępnie zdefiniowany skrót klawiaturowy lub inną kombinację naciśnięć klawiszy.

  • InvokedEvent jest wywoływany w kontrolce, która została aktywowana (jako odpowiedź na kontrolkę wykonującą skojarzona akcję). Jeśli to możliwe, zdarzenie powinno zostać podniesione po zakończeniu działania przez kontrolkę i zwróconej bez blokowania. Wywołane zdarzenie powinno zostać zgłoszone przed obsługą żądania Invoke w następujących scenariuszach:

    • Nie jest możliwe ani praktyczne oczekiwanie na ukończenie akcji.

    • Akcja wymaga interakcji użytkownika.

    • Akcja jest czasochłonna i spowoduje zablokowanie klienta wywołującego przez znaczną ilość czasu.

  • Jeśli wywołanie kontroli ma znaczące skutki uboczne, te skutki uboczne powinny być narażone przez HelpText właściwość. Na przykład, mimo że Invoke nie jest skojarzony z wyborem, Invoke może spowodować wybranie innej kontrolki.

  • Efekty aktywowania (lub myszy) zwykle nie stanowią wywołanego zdarzenia. Jednak kontrolki wykonujące akcję (w przeciwieństwie do wywołania efektu wizualnego) na podstawie stanu aktywowania powinny obsługiwać wzorzec kontrolki InvokePattern .

Uwaga

Ta implementacja jest uważana za problem z ułatwieniami dostępu, jeśli kontrolka może być wywoływana tylko w wyniku efektu bocznego związanego z myszą.

  • Wywoływanie kontrolki różni się od wybierania elementu. Jednak w zależności od kontrolki wywołanie go może spowodować, że element zostanie wybrany jako efekt uboczny. Na przykład wywołanie elementu listy dokumentów programu Microsoft Word w folderze Moje dokumenty powoduje wybranie elementu i otwarcie dokumentu.

  • Element może zniknąć z drzewa automatyzacja interfejsu użytkownika natychmiast po wywołaniu. Żądanie informacji z elementu dostarczonego przez wywołanie zwrotne zdarzeń może zakończyć się niepowodzeniem w wyniku. Zalecane jest wstępne pobieranie buforowanych informacji.

  • Kontrolki mogą implementować wiele wzorców kontrolek. Na przykład kontrolka Kolor wypełnienia na pasku narzędzi programu Microsoft Excel implementuje wzorce InvokePattern kontrolek i ExpandCollapsePattern . ExpandCollapsePattern Uwidacznia menu i InvokePattern wypełnia aktywny wybór wybranym kolorem.

Wymagane elementy członkowskie dla dostawcy IInvokeProvider

Następujące właściwości i metody są wymagane do zaimplementowania IInvokeProvidermetody .

Wymagane elementy członkowskie Typ elementu członkowskiego Uwagi
Invoke metoda Invoke jest wywołaniem asynchronicznym i musi zostać zwrócone natychmiast bez blokowania.

Takie zachowanie jest szczególnie krytyczne w przypadku kontrolek, które bezpośrednio lub pośrednio uruchamiają modalne okno dialogowe po wywołaniu. Każdy klient automatyzacja interfejsu użytkownika, który podżegał zdarzenie, pozostanie zablokowany do momentu zamknięcia modalnego okna dialogowego.

Wyjątki

Dostawcy muszą zgłaszać następujące wyjątki.

Typ wyjątku Stan
ElementNotEnabledException Jeśli kontrolka nie jest włączona.

Zobacz też