Partage via


Automation.AddStructureChangedEventHandler Méthode

Définition

Enregistre la méthode qui gérera les événements de modification de structure.

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)

Paramètres

element
AutomationElement

Élément UI Automation auquel associer le gestionnaire d’événements.

scope
TreeScope

Portée des événements à gérer, c'est-à-dire s'ils sont sur l'élément lui-même, ou sur ses ancêtres et descendants.

eventHandler
StructureChangedEventHandler

Méthode à appeler lorsque l'événement de modification de structure se produit.

Exemples

L’exemple suivant montre un délégué de gestionnaire d’événements modifié par la structure qui sera appelé chaque fois que la sous-arborescence du spécifié AutomationElement change.

/// <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

L’exemple de code suivant ajoute une instance du délégué.

// 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))

Remarques

eventHandler peut être une instance de la méthode ou une référence à la méthode (AddressOf en Visual Basic).

S’applique à

Voir aussi