Udostępnij za pośrednictwem


Wzorzec wywołania kontrolki

Opisuje wytyczne i konwencje implementowania IInvokeProvider, w tym informacje o metodach. Wzorzec sterowania Invoke służy do obsługi kontrolek, które nie utrzymują stanu po aktywowaniu, ale raczej inicjują lub wykonują pojedynczą, jednoznaczną akcję.

Kontrolki, które utrzymują stan, takie jak pola wyboru i przyciski radiowe, muszą implementować odpowiednio IToggleProvider i ISelectionProvider. Aby zapoznać się z przykładami kontrolek implementujących ten wzorzec kontrolki, zobacz typy kontrolek i obsługiwane wzorce kontrolek.

Ten temat zawiera następujące sekcje.

Wytyczne i konwencje implementacji

Podczas implementowania wzorca sterowania Invoke 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 metoda IUIAutomationInvokePattern::Invoke kontrolki wykonuje tę samą akcję co IUIAutomationExpandCollapsePattern::Rozwiń lub Zwiń metodę, kontrolka nie powinna implementować IInvokeProvider.

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

  • Zdarzenie wywoływane (UIA_Invoke_InvokedEventId) jest wywoływane w kontrolce, która została aktywowana (jako odpowiedź na kontrolkę wykonującą skojarzą akcję). Jeśli to możliwe, zdarzenie powinno zostać podniesione po zakończeniu działania przez kontrolkę i zwróconej bez blokowania. Przed obsługą żądania Invoke (UIA_Invoke_InvokedEventId) należy wywołać zdarzenie 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ści. Na przykład, mimo że IUIAutomationInvokePattern::Invoke nie jest skojarzony z wyborem, Wywołaj może spowodować wybranie innej kontrolki.

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

    Nuta

    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 automatyzacji interfejsu użytkownika firmy Microsoft 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 kontrolek Invoke i ExpandCollapse. Wzorzec kontrolki ExpandCollapse uwidacznia menu, a wzorzec kontrolki Invoke wypełnia aktywny wybór wybranym kolorem.

Wymagane elementy członkowskie IInvokeProvider

Poniższa metoda jest wymagana do zaimplementowania interfejsuIInvokeProvider.

Wymagane elementy członkowskie Typ elementu członkowskiego Notatki
Wywołaj 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 automatyzacji interfejsu użytkownika, który zainicjował zdarzenie, pozostanie zablokowany do momentu zamknięcia modalnego okna dialogowego.

Ten wzorzec kontrolki nie ma skojarzonych właściwości ani zdarzeń.

typów kontrolek i ich obsługiwanych wzorców kontrolek

Wzorce kontrolek automatyzacji interfejsu użytkownika — omówienie

Omówienie drzewa automatyzacji interfejsu użytkownika

UIA_Invoke_InvokedEventId