Share via


Automation.AddStructureChangedEventHandler Yöntem

Tanım

Yapısı değiştirilmiş olayları işleyecek yöntemi kaydeder.

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)

Parametreler

element
AutomationElement

Olay işleyicisinin ilişkilendirildiği UI Otomasyonu öğesi.

scope
TreeScope

İşlenecek olayların kapsamı; yani, ister öğenin kendisinde ister ataları ve alt öğeleri üzerinde olsunlar.

eventHandler
StructureChangedEventHandler

Yapı değişikliği olayı gerçekleştiğinde çağrılacak yöntem.

Örnekler

Aşağıdaki örnekte, belirtilen AutomationElement alt ağaç her değiştiğinde çağrılacak, yapılandırılmış bir olay işleyicisi temsilcisi gösterilmektedir.

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

Aşağıdaki örnek kod, temsilcinin bir örneğini ekler.

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

Açıklamalar

eventHandler yönteminin bir örneği veya yöntemine başvuru (AddressOf Visual Basic'te) olabilir.

Şunlara uygulanır

Ayrıca bkz.