Freigeben über


Automation.AddStructureChangedEventHandler Methode

Definition

Registriert die Methode, die Strukturänderungsereignisse behandelt.

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)

Parameter

element
AutomationElement

Das Benutzeroberflächenautomatisierung-Element, dem der Ereignishandler zugeordnet werden soll.

scope
TreeScope

Der Umfang der zu behandelnden Elemente, d. h. ob die Ereignisse bei dem Element selbst oder bei Vorgänger- oder Nachfolgerelementen eintreten.

eventHandler
StructureChangedEventHandler

Die Methode, die beim Eintreten des Strukturänderungsereignisses aufgerufen werden soll.

Beispiele

Das folgende Beispiel zeigt einen Strukturänderungs-Ereignishandlerdelegat, der aufgerufen wird, wenn sich die Unterstruktur der angegebenen AutomationElement Änderungen ändert.

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

Im folgenden Beispielcode wird eine Instanz des Delegaten hinzugefügt.

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

Hinweise

eventHandler kann eine Instanz der -Methode oder ein Verweis auf die -Methode (AddressOf in Visual Basic) sein.

Gilt für:

Weitere Informationen