Condividi tramite


Implementazione del modello di controllo Invoke di UI Automation dell'interfaccia utente

Annotazioni

Questa documentazione è destinata agli sviluppatori .NET Framework che vogliono usare le classi di automazione interfaccia utente gestite definite nello spazio dei nomi System.Windows.Automation. Per le informazioni più recenti sull'automazione interfaccia utente, vedere API di automazione di Windows: Automazione interfaccia utente.

Questo argomento presenta linee guida e convenzioni per l'implementazione di IInvokeProvider, incluse informazioni su eventi e proprietà. Alla fine della panoramica sono elencati collegamenti ad altro materiale di riferimento.

Il InvokePattern 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 IToggleProvider e ISelectionItemProvider rispettivamente. Per esempi di controlli che implementano il pattern di controllo Invoke, vedere Mapping dei pattern di controllo per i client di automazione interfaccia utente.

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 Invoke metodo in un controllo esegue la stessa azione del Expand metodo 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.

  • InvokedEvent 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 deve essere generato prima di gestire la richiesta 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 HelpText proprietà . Ad esempio, anche se Invoke non è associato alla selezione, Invoke un altro controllo può diventare selezionato.

  • Gli effetti hover (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 di passaggio del mouse devono supportare il InvokePattern pattern di controllo.

Annotazioni

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 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 Colore riempimento sulla barra degli strumenti di Microsoft Excel implementa sia i pattern di controllo InvokePattern che ExpandCollapsePattern. ExpandCollapsePattern espone il menu e InvokePattern riempie la selezione attiva con il colore scelto.

Membri obbligatori per IInvokeProvider

Per l'implementazione IInvokeProviderdi sono necessari i metodi e le proprietà seguenti.

Membri obbligatori Tipo di membro Note
Invoke metodo Invoke è una chiamata asincrona e deve ritornare 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.

Eccezioni

I provider devono sollevare le eccezioni seguenti.

Tipo di eccezione Condizione
ElementNotEnabledException Se il controllo non è abilitato.

Vedere anche