UI Automation-händelser för klienter
Kommentar
Den här dokumentationen System.Windows.Automation är avsedd för .NET Framework-utvecklare som vill använda de hanterade UI Automation-klasserna som definierats i namnområdet. Den senaste informationen om UI Automation finns i Windows Automation API: UI Automation.
Det här avsnittet beskriver hur Microsoft UI Automation-händelser används av UI Automation-klienter.
Med UI Automation kan klienter prenumerera på händelser av intresse. Den här funktionen förbättrar prestandan genom att eliminera behovet av att kontinuerligt avsöka alla användargränssnittselement i systemet för att se om någon information, struktur eller tillstånd har ändrats.
Effektiviteten förbättras också genom möjligheten att endast lyssna efter händelser inom ett definierat omfång. En klient kan till exempel lyssna efter fokusändringshändelser på alla UI Automation-element i trädet, eller bara på ett element och dess underordnade element.
Kommentar
Anta inte att alla möjliga händelser genereras av en Microsoft UI Automation-provider. Till exempel leder inte alla egenskapsändringar till att händelser genereras av standardproxyprovidrar för Windows Forms- och Win32-kontroller.
En bredare vy över UI Automation-händelser finns i Översikt över UI Automation-händelser.
Prenumerera på händelser
Klientprogram prenumererar på händelser av ett visst slag genom att registrera en händelsehanterare med någon av följande metoder.
Metod | Händelsetyp | Typ av händelseargument | Ombudstyp |
---|---|---|---|
AddAutomationFocusChangedEventHandler | Fokusändring | AutomationFocusChangedEventArgs | AutomationFocusChangedEventHandler |
AddAutomationPropertyChangedEventHandler | Egenskapsändring | AutomationPropertyChangedEventArgs | AutomationPropertyChangedEventHandler |
AddStructureChangedEventHandler | Strukturändring | StructureChangedEventArgs | StructureChangedEventHandler |
AddAutomationEventHandler | Alla andra händelser som identifieras av en AutomationEvent | AutomationEventArgs eller WindowClosedEventArgs | AutomationEventHandler |
Innan du anropar metoden måste du skapa en ombudsmetod för att hantera händelsen. Om du vill kan du hantera olika typer av händelser i en enda metod och skicka den här metoden i flera anrop till någon av metoderna i tabellen. En enskild AutomationEventHandler kan till exempel konfigureras för att hantera olika händelser på olika sätt beroende på EventId.
Kommentar
Om du vill bearbeta fönster stängda händelser skickar du den argumenttyp som skickas till händelsehanteraren som WindowClosedEventArgs. Eftersom Microsoft UI Automation-elementet för fönstret inte längre är giltigt kan du inte använda parametern sender
för att hämta information. Använd GetRuntimeId i stället.
Varning
Om ditt program kan ta emot händelser från sitt eget användargränssnitt ska du inte använda programmets användargränssnittstråd för att prenumerera på händelser eller avbryta prenumerationen. Detta kan leda till oförutsägbart beteende. Mer information finns i UI Automation Threading Issues (UI Automation Threading Issues).
Vid avstängning, eller när UI Automation-händelser inte längre är av intresse för programmet, bör UI Automation-klienter anropa någon av följande metoder.
Metod | beskrivning |
---|---|
RemoveAutomationEventHandler | Avregistrerar en händelsehanterare som har registrerats med hjälp AddAutomationEventHandlerav . |
RemoveAutomationFocusChangedEventHandler | Avregistrerar en händelsehanterare som har registrerats med hjälp AddAutomationFocusChangedEventHandlerav . |
RemoveAutomationPropertyChangedEventHandler | Avregistrerar en händelsehanterare som har registrerats med hjälp AddAutomationPropertyChangedEventHandlerav . |
RemoveAllEventHandlers | Avregistrerar alla registrerade händelsehanterare. |
Exempelkod finns i Prenumerera på UI Automation-händelser.