Eventi di automazione interfaccia utente per i client

Nota

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

Questo argomento descrive in che modo gli eventi di Automazione interfaccia utente Microsoft vengono usati dai client di Automazione interfaccia utente.

Automazione interfaccia utente consente ai client di sottoscrivere gli eventi di interesse. Questa funzionalità migliora le prestazioni eliminando la necessità di esaminare continuamente tutti gli elementi di interfaccia utente nel sistema per verificare se sono state apportate modifiche alle informazioni, la struttura o lo stato.

Una maggiore efficienza è ottenuta anche grazie alla possibilità di restare in ascolto di eventi solo in un ambito definito. Un client, ad esempio, può restare in ascolto di eventi di modifica dello stato attivo per tutti gli elementi di Automazione interfaccia utente dell'albero o solo per un elemento e i relativi discendenti.

Nota

Evitare di presupporre che tutti gli eventi possibili siano generati da un provider di Automazione interfaccia utente Microsoft. Ad esempio, non per tutte le modifiche di proprietà vengono generati eventi dai provider proxy standard per i controlli Windows Forms e Win32.

Per una visualizzazione più ampia degli eventi di Automazione interfaccia utente, vedere Panoramica degli eventi di Automazione interfaccia utente.

Sottoscrizione di eventi

Le applicazioni client sottoscrivono eventi di una particolare tipologia registrando un gestore eventi, con uno dei metodi seguenti.

metodo Tipo di evento Tipo argomenti evento Tipo di delegato
AddAutomationFocusChangedEventHandler Modifica dello stato attivo AutomationFocusChangedEventArgs AutomationFocusChangedEventHandler
AddAutomationPropertyChangedEventHandler Modifica proprietà AutomationPropertyChangedEventArgs AutomationPropertyChangedEventHandler
AddStructureChangedEventHandler Modifica struttura StructureChangedEventArgs StructureChangedEventHandler
AddAutomationEventHandler Tutti gli altri eventi, identificati da AutomationEvent AutomationEventArgs oppure WindowClosedEventArgs AutomationEventHandler

Prima di chiamare il metodo, è necessario creare un metodo delegato per gestire l'evento. Se si preferisce, è possibile gestire tipologie diverse di eventi con un solo metodo e passare questo metodo in più chiamate a uno dei metodi della tabella. Ad esempio, è possibile configurare un singolo AutomationEventHandler per gestire svariati eventi in modo diverso in base all'EventId.

Nota

Per elaborare eventi di chiusura di finestra, eseguire il cast del tipo di argomento passato al gestore eventi come WindowClosedEventArgs. Poiché l'elemento di Automazione interfaccia utente Microsoft per la finestra non è più valido, non è possibile usare il parametro sender per recuperare le informazioni. Usare invece GetRuntimeId.

Attenzione

Se l'applicazione può ricevere eventi dalla propria interfaccia utente, non usare il thread di interfaccia utente dell'applicazione per sottoscrivere gli eventi o per annullare una sottoscrizione. perché potrebbe verificarsi un comportamento imprevisto. Per altre informazioni, vedere UI Automation Threading Issues.

All'arresto o quando gli eventi di Automazione interfaccia utente non interessano più l'applicazione, i client di automazione interfaccia utente devono chiamare uno dei metodi seguenti.

metodo Descrizione
RemoveAutomationEventHandler Annulla la registrazione di un gestore eventi che era stato registrato usando AddAutomationEventHandler.
RemoveAutomationFocusChangedEventHandler Annulla la registrazione di un gestore eventi che era stato registrato usando AddAutomationFocusChangedEventHandler.
RemoveAutomationPropertyChangedEventHandler Annulla la registrazione di un gestore eventi che era stato registrato usando AddAutomationPropertyChangedEventHandler.
RemoveAllEventHandlers Annulla la registrazione di tutti i gestori eventi registrati.

Per un esempio di codice, vedere Sottoscrivere eventi di Automazione interfaccia utente.

Vedi anche