Implementazione del pattern di controllo Invoke di automazione interfaccia utente

Nota

Questa documentazione è destinata agli sviluppatori .NET Framework che desiderano utilizzare le classi di UI Automation gestite definite nello spazio dei nomi System.Windows.Automation. Per informazioni aggiornate su UI Automation, vedere API di automazione di Windows: UI Automation.

In questo argomento vengono presentate le linee guida e le convenzioni per l'implementazione di IInvokeProvider, incluse le informazioni relative a eventi e proprietà. Alla fine della panoramica sono elencati collegamenti ad altro materiale di riferimento.

Il pattern di controllo InvokePattern viene usato per supportare i controlli che non mantengono lo stato quando sono attivati, bensì avviano o eseguono una singola azione non ambigua. I controlli che mantengono lo stato, ad esempio caselle di controllo e pulsanti di opzione, devono invece implementare rispettivamente IToggleProvider e ISelectionItemProvider . Per esempi di controlli che implementano il pattern di controllo Invoke, vedere Control Pattern Mapping for UI Automation Clients.

Linee guida e convenzioni di implementazione

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

  • I controlli implementano IInvokeProvider se lo stesso comportamento non viene esposto mediante un altro provider di pattern di controllo. Ad esempio, se il metodo Invoke su un controllo esegue la stessa azione del metodo 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.

  • Viene generato un eventoInvokedEvent su un controllo che è stato attivato in 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 Invoked deve essere generato prima che la richiesta Invoke venga gestita 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 il richiamo del controllo è caratterizzato da effetti collaterali significativi, tali effetti collaterali devono essere esposte tramite la proprietà HelpText . Ad esempio, anche se il metodo Invoke non è associato alla selezione, Invoke può causare la selezione di un altro controllo.

  • Gli effetti del passaggio del mouse sopra un elemento in genere non determinano la generazione di un evento Invoke. Tuttavia, i controlli che eseguono un'azione (a differenza di quelli che generano un effetto visivo) basata sullo stato del passaggio del mouse devono supportare il pattern di controllo InvokePattern .

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, la chiamata di un elemento dell'elenco di documenti di Microsoft Word nella cartella Documenti comporta sia la selezione dell'elemento che l'apertura del documento.

  • Un elemento può scomparire dall'albero UI Automation subito dopo essere stato 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 Colore riempimento sulla barra degli strumenti di Microsoft Excel implementa sia il pattern di controllo InvokePattern che il pattern di controllo ExpandCollapsePattern. ExpandCollapsePattern espone il menu e InvokePattern riempie la selezione attiva con il colore selezionato.

Membri obbligatori per IInvokeProvider

Le proprietà e i metodi seguenti sono obbligatori per l'implementazione di IInvokeProvider.

Membri obbligatori Tipo di membro Note
Invoke metodo Invoke è una chiamata asincrona e deve restituire immediatamente un valore senza bloccarsi.

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.

Eccezioni

I provider devono generare le eccezioni seguenti.

Tipo di eccezione Condizione
ElementNotEnabledException Il controllo non è abilitato.

Vedi anche