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.