Richiamare il modello di controllo

Descrive linee guida e convenzioni per l'implementazione di IInvokeProvider, incluse informazioni sui metodi. Il modello di controllo Invoke viene usato per supportare i controlli che non mantengono lo stato quando vengono attivati, ma si avviano o eseguono un'azione singola e non ambigua.

I controlli che gestiscono lo stato, ad esempio caselle di controllo e pulsanti di opzione, devono implementare rispettivamente IToggleProvider e ISelectionProvider . Per esempi di controlli che implementano questo modello di controllo, vedere Tipi di controllo e modelli di controllo supportati.

In questo argomento sono contenute le sezioni seguenti.

Linee guida e convenzioni di implementazione

Quando si implementa il modello di controllo Invoke , prendere nota delle linee guida e delle convenzioni seguenti:

  • I controlli implementano IInvokeProvider se lo stesso comportamento non viene esposto tramite un altro provider di modelli di controllo. Ad esempio, se il metodo IUIAutomationInvokePattern::Invoke in 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 doppio clic oppure premendo INVIO, una scelta rapida predefinita da tastiera 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 ed è stato restituito senza alcun blocco. L'evento Richiamato (UIA_Invoke_InvokedEventId) deve essere generato prima di eseguire la manutenzione della richiesta Invoke negli scenari seguenti:

    • Non è possibile o conveniente attendere il completamento dell'azione.
    • L'azione richiede l'intervento dell'utente.
    • L'azione è dispendiosa a livello di tempo e comporta il blocco del client chiamante un periodo di tempo significativo.
  • Se si richiama il controllo hanno 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 mouse (o mouse-over) in genere non costituiscono un evento richiamato . Tuttavia, i controlli che eseguono un'azione (anziché causare un effetto visivo) in base allo stato del puntatore del mouse devono supportare il modello di controllo Invoke .

    Nota

    Questa implementazione viene considerata un problema di accessibilità se il controllo può essere chiamato solo come risultato di un effetto collaterale relativo al mouse.

  • La chiamata di un controllo è diversa dalla selezione di un elemento. Tuttavia, a seconda del controllo, come effetto collaterale la chiamata potrebbe causare la selezione dell'elemento. Ad esempio, richiamando un elemento elenco di documenti Microsoft Word nella cartella Documenti personali sia seleziona l'elemento che apre il documento.

  • Un elemento può scomparire dall'albero di Automazione interfaccia utente Microsoft immediatamente dopo essere richiamato. Di conseguenza, la richiesta di informazioni dall'elemento fornito dal callback di evento potrebbe avere esito negativo. La prelettura delle informazioni memorizzate nella cache rappresenta la soluzione alternativa consigliata.

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

Membri obbligatori per IInvokeProvider

Il metodo seguente è necessario per implementare l'interfaccia IInvokeProvider .

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 quando vengono chiamati. Qualsiasi client di automazione interfaccia utente che ha generato l'evento rimarrà bloccato fino a quando non viene chiusa la finestra di dialogo modale.

Questo pattern di controllo non è associato a proprietà o eventi.

Tipi di controllo e modelli di controllo supportati

Cenni preliminari sui pattern di controllo per l'automazione interfaccia utente

Panoramica dell'albero di automazione dell'interfaccia utente

UIA_Invoke_InvokedEventId