Condividi tramite


Richiamare il pattern di controllo

Vengono descritte le linee guida e le convenzioni per l'implementazione di IInvokeProvider, incluse le informazioni sui metodi. Il Richiamare pattern di controllo viene usato per supportare i controlli che non mantengono lo stato quando sono attivati, ma piuttosto avviano o eseguono un'unica azione non ambigua.

I controlli che mantengono lo stato, ad esempio caselle di controllo e pulsanti di opzione, devono implementare rispettivamente IToggleProvider e ISelectionProvider. Per esempi di controlli che implementano questo pattern di controllo, vedere Tipi di controllo e i relativi pattern di controllo supportati.

Questo argomento contiene le sezioni seguenti.

Linee guida e convenzioni di implementazione

Quando si implementa il pattern di controllo Invoke, tenere presenti le linee guida e le convenzioni seguenti:

  • I controlli implementano IInvokeProvider se lo stesso comportamento non viene esposto tramite un altro provider del pattern di controllo. Ad esempio, se il metodo IUIAutomationInvokePattern::Invoke su un controllo esegue la stessa azione del metodo IUIAutomationExpandCollapsePattern::Expand o Collapse, il controllo non deve implementare IInvokeProvider.

  • La chiamata di un controllo viene in genere eseguita facendo clic o facendo doppio clic o premendo INVIO, una scelta rapida da tastiera predefinita o una combinazione alternativa di tasti.

  • L'evento Richiamato (UIA_Invoke_InvokedEventId) viene generato su un controllo attivato (come risposta a un controllo che esegue l'azione associata). Se possibile, l'evento deve essere generato dopo che il controllo ha completato l'azione e restituito senza bloccare. L'evento richiamato (UIA_Invoke_InvokedEventId) deve essere generato prima di eseguire la manutenzione della richiesta di invoke negli scenari seguenti:

    • Non è possibile o pratico attendere il completamento dell'azione.
    • L'azione richiede l'interazione dell'utente.
    • L'azione richiede molto tempo e causerà il blocco del client chiamante per una quantità significativa di tempo.
  • Se il richiamo del controllo ha effetti collaterali significativi, tali effetti collaterali devono essere esposti tramite la proprietà HelpText. Ad esempio, anche se IUIAutomationInvokePattern::Invoke non è associato alla selezione, Invoke può causare l'selezione di un altro controllo.

  • Gli effetti al passaggio del mouse (o del mouse) in genere non costituiscono un evento richiamato. Tuttavia, i controlli che eseguono un'azione (anziché causare un effetto visivo) in base allo stato di passaggio del mouse devono supportare il pattern di controllo Invoke.

    Nota

    Questa implementazione è considerata un problema di accessibilità se il controllo può essere richiamato solo in seguito a un effetto collaterale correlato al mouse.

  • La chiamata di un controllo è diversa dalla selezione di un elemento. Tuttavia, a seconda del controllo, richiamare l'elemento potrebbe diventare selezionato come effetto collaterale. Ad esempio, richiamando una voce di elenco di documenti di Microsoft Word nella cartella Documenti, entrambi selezionano l'elemento e apre il documento.

  • Un elemento può scomparire dall'albero di Automazione interfaccia utente Microsoft immediatamente dopo essere stato richiamato. La richiesta di informazioni dall'elemento fornito dal callback dell'evento potrebbe non riuscire di conseguenza. La prelettura delle informazioni memorizzate nella cache è la soluzione alternativa consigliata.

  • I controlli possono implementare più pattern di controllo. Ad esempio, il controllo Fill Color sulla barra degli strumenti di Microsoft Excel implementa sia i pattern di controllo Invoke che il ExpandCollapse. Il pattern di controllo ExpandCollapse espone il menu e il Invoke motivo di controllo riempie la selezione attiva con il colore scelto.

Membri obbligatori per IInvokeProvider

Il metodo seguente è necessario per implementare l'interfacciaIInvokeProvider.

Membri obbligatori Tipo di membro Note
Invoke Metodo Invoke è una chiamata asincrona e deve restituire immediatamente senza bloccare.
Questo comportamento è particolarmente critico per i controlli che, direttamente o indirettamente, avviano una finestra di dialogo modale quando viene richiamata. Qualsiasi client di automazione interfaccia utente che ha creato l'evento rimarrà bloccato fino alla chiusura della finestra di dialogo modale.

Questo pattern di controllo non ha proprietà o eventi associati.

tipi di controllo e i relativi modelli di controllo supportati

Panoramica modelli di controllo di automazione interfaccia utente

panoramica dell'albero di automazione interfaccia utente

UIA_Invoke_InvokedEventId