Automation.AddStructureChangedEventHandler Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Registra el método que controla los eventos de cambio de estructura.
public:
static void AddStructureChangedEventHandler(System::Windows::Automation::AutomationElement ^ element, System::Windows::Automation::TreeScope scope, System::Windows::Automation::StructureChangedEventHandler ^ eventHandler);
public static void AddStructureChangedEventHandler (System.Windows.Automation.AutomationElement element, System.Windows.Automation.TreeScope scope, System.Windows.Automation.StructureChangedEventHandler eventHandler);
static member AddStructureChangedEventHandler : System.Windows.Automation.AutomationElement * System.Windows.Automation.TreeScope * System.Windows.Automation.StructureChangedEventHandler -> unit
Public Shared Sub AddStructureChangedEventHandler (element As AutomationElement, scope As TreeScope, eventHandler As StructureChangedEventHandler)
Parámetros
- element
- AutomationElement
Elemento Automatización de la interfaz de usuario al que se va a asociar el controlador de eventos.
- scope
- TreeScope
Ámbito de eventos que se va a controlar; es decir, si se va a controlar el propio elemento o sus antecesores y descendientes.
- eventHandler
- StructureChangedEventHandler
Método al que se debe llamar cuando se produzca el evento de cambio de estructura.
Ejemplos
En el ejemplo siguiente se muestra un delegado del controlador de eventos modificado por la estructura al que se llamará cada vez que cambie el subárbol de los cambios especificados AutomationElement .
/// <summary>
/// Handles structure-changed events. If a new app window has been added, this method ensures
/// it's in the list of runtime IDs and subscribed to window-close events.
/// </summary>
/// <param name="sender">Object that raised the event.</param>
/// <param name="e">Event arguments.</param>
/// <remarks>
/// An exception can be thrown by the UI Automation core if the element disappears
/// before it can be processed -- for example, if a menu item is only briefly visible.
/// This exception cannot be caught here because it crosses native/managed boundaries.
/// In the debugger, you can ignore it and continue execution. The exception does not cause
/// a break when the executable is being run.
/// </remarks>
private void OnStructureChanged(object sender, StructureChangedEventArgs e)
{
AutomationElement element = sender as AutomationElement;
if (e.StructureChangeType == StructureChangeType.ChildAdded)
{
Object windowPattern;
if (false == element.TryGetCurrentPattern(WindowPattern.Pattern, out windowPattern))
{
return;
}
int[] rid = e.GetRuntimeId();
if (RuntimeIdListed(rid, savedRuntimeIds) < 0)
{
AddToWindowHandler(element);
savedRuntimeIds.Add(rid);
}
}
}
''' <summary>
''' Handles structure-changed events. If a new app window has been added, this method ensures
''' it's in the list of runtime IDs and subscribed to window-close events.
''' </summary>
''' <param name="sender">Object that raised the event.</param>
''' <param name="e">Event arguments.</param>
''' <remarks>
''' An exception can be thrown by the UI Automation core if the element disappears
''' before it can be processed -- for example, if a menu item is only briefly visible.
''' This exception cannot be caught here because it crosses native/managed boundaries.
''' In the debugger, you can ignore it and continue execution. The exception does not cause
''' a break when the executable is being run.
''' </remarks>
Private Sub OnStructureChanged(ByVal sender As Object, ByVal e As StructureChangedEventArgs)
Dim element As AutomationElement = DirectCast(sender, AutomationElement)
If e.StructureChangeType = StructureChangeType.ChildAdded Then
Dim myWindowPattern As Object = Nothing
If False = element.TryGetCurrentPattern(WindowPattern.Pattern, myWindowPattern) Then
Return
End If
Dim rid As Integer() = e.GetRuntimeId()
If RuntimeIdListed(rid, savedRuntimeIds) < 0 Then
AddToWindowHandler(element)
savedRuntimeIds.Add(rid)
End If
End If
End Sub
En el código de ejemplo siguiente se agrega una instancia del delegado.
// elementRoot is an AutomationElement.
Automation.AddStructureChangedEventHandler(elementRoot, TreeScope.Children,
new StructureChangedEventHandler(OnStructureChanged));
' elementRoot is an AutomationElement.
Automation.AddStructureChangedEventHandler(elementRoot, TreeScope.Children, New StructureChangedEventHandler(AddressOf OnStructureChanged))
Comentarios
eventHandler
puede ser una instancia del método o una referencia al método (AddressOf
en Visual Basic).
Se aplica a
Consulte también
- RemoveStructureChangedEventHandler(AutomationElement, StructureChangedEventHandler)
- AddAutomationEventHandler(AutomationEvent, AutomationElement, TreeScope, AutomationEventHandler)
- AddAutomationFocusChangedEventHandler(AutomationFocusChangedEventHandler)
- Suscribirse a eventos de UI Automation
- Información general sobre eventos de UI Automation