AutomationInteropProvider.RaiseStructureChangedEvent Methode

Definition

Löst ein Ereignis aus, wenn sich die Benutzeroberflächenautomatisierungsstruktur geändert hat.

public:
 static void RaiseStructureChangedEvent(System::Windows::Automation::Provider::IRawElementProviderSimple ^ provider, System::Windows::Automation::StructureChangedEventArgs ^ e);
public static void RaiseStructureChangedEvent (System.Windows.Automation.Provider.IRawElementProviderSimple provider, System.Windows.Automation.StructureChangedEventArgs e);
static member RaiseStructureChangedEvent : System.Windows.Automation.Provider.IRawElementProviderSimple * System.Windows.Automation.StructureChangedEventArgs -> unit
Public Shared Sub RaiseStructureChangedEvent (provider As IRawElementProviderSimple, e As StructureChangedEventArgs)

Parameter

provider
IRawElementProviderSimple

Das dem Ereignis zugeordnete Element.

e
StructureChangedEventArgs

Informationen zum Ereignis.

Beispiele

Das folgende Beispiel zeigt, wie ein Ereignis ausgelöst wird, wenn einem benutzerdefinierten Listenfeld untergeordnete Elemente hinzugefügt oder daraus entfernt werden.

/// <summary>
/// Responds to an addition to the UI Automation tree structure by raising an event.
/// </summary>
/// <param name="list">
/// The list to which the item was added.
/// </param>
/// <remarks>
/// For the runtime Id of the item, pass 0 because the provider cannot know
/// what its actual runtime Id is.
/// </remarks>
public static void OnStructureChangeAdd(CustomListControl list)
{
    if (AutomationInteropProvider.ClientsAreListening)
    {
        int[] fakeRuntimeId = { 0 };
        StructureChangedEventArgs args =
            new StructureChangedEventArgs(StructureChangeType.ChildrenBulkAdded, 
            fakeRuntimeId);
        AutomationInteropProvider.RaiseStructureChangedEvent(
            (IRawElementProviderSimple)list.Provider, args);
    }
}

/// <summary>
/// Responds to a removal from the UI Automation tree structure 
/// by raising an event.
/// </summary>
/// <param name="list">
/// The list from which the item was removed.
/// </param>
/// <remarks>
/// For the runtime Id of the list, pass 0 because the provider cannot know
/// what its actual runtime ID is.
/// </remarks>
public static void OnStructureChangeRemove(CustomListControl list)
{
    if (AutomationInteropProvider.ClientsAreListening)
    {
        int[] fakeRuntimeId = { 0 };
        StructureChangedEventArgs args =
            new StructureChangedEventArgs(StructureChangeType.ChildrenBulkRemoved, 
            fakeRuntimeId);
        AutomationInteropProvider.RaiseStructureChangedEvent(
            (IRawElementProviderSimple)list.Provider, args);
    }
}
''' <summary>
''' Responds to an addition to the UI Automation tree structure by raising an event.
''' </summary>
''' <param name="list">
''' The list to which the item was added.
''' </param>
''' <remarks>
''' For the runtime Id of the item, pass 0 because the provider cannot know
''' what its actual runtime Id is.
''' </remarks>
Public Shared Sub OnStructureChangeAdd(ByVal list As CustomListControl)
    If AutomationInteropProvider.ClientsAreListening Then
        Dim fakeRuntimeId(1) As Integer
        fakeRuntimeId(0) = 0
        Dim args As New StructureChangedEventArgs( _
            StructureChangeType.ChildrenBulkAdded, fakeRuntimeId)
        AutomationInteropProvider.RaiseStructureChangedEvent( _
            CType(list.Provider, IRawElementProviderSimple), args)
    End If

End Sub


''' <summary>
''' Responds to a removal from the UI Automation tree structure by raising an event.
''' </summary>
''' <param name="list">
''' The list from which the item was removed.
''' </param>
''' <remarks>
''' For the runtime Id of the list, pass 0 because the provider cannot know
''' what its actual runtime ID is.
''' </remarks>
Public Shared Sub OnStructureChangeRemove(ByVal list As CustomListControl)
    If AutomationInteropProvider.ClientsAreListening Then
        Dim fakeRuntimeId(1) As Integer
        fakeRuntimeId(0) = 0
        Dim args As New StructureChangedEventArgs( _
            StructureChangeType.ChildrenBulkRemoved, fakeRuntimeId)
        AutomationInteropProvider.RaiseStructureChangedEvent( _
            CType(list.Provider, IRawElementProviderSimple), args)
    End If

End Sub

Hinweise

Ein Beispiel für eine Änderung in der Struktur ist, dass untergeordnete Elemente einem Listenfeld hinzugefügt oder daraus entfernt werden oder in einer Strukturansicht erweitert oder reduziert werden.

Wenn ein untergeordnetes Element entfernt wird, wird der Laufzeitbezeichner des Elements oder seines Containers an den StructureChangedEventArgs Konstruktor übergeben. In der aktuellen Version der Benutzeroberflächenautomatisierung gibt es jedoch keine einfache Möglichkeit für einen instance eines Anbieters, seinen Laufzeitbezeichner zu ermitteln. Die GetRuntimeId -Methode gibt normalerweise ein Array zurück, das AppendRuntimeIdenthält, eine magische Zahl, die das Benutzeroberflächenautomatisierungssystem anweist, eine eindeutige Identifer für jede instance des Steuerelements zu erstellen. Der von GetRuntimeId bereitgestellte Rohwert sollte nicht in Ereignissen verwendet werden, da er für Clients bedeutungslos ist und nicht zum Identifizieren eines bestimmten instance verwendet werden kann.

Aufgrund dieser Einschränkung sind Ereignisse vom Typ ChildAdded und ChildRemoved nicht sehr nützlich. Alternativ können Sie immer und ChildrenBulkRemovedverwendenChildrenBulkAdded, indem Sie 0 als Laufzeitidentifer übergeben. Sie können nicht verwenden null, da dadurch eine Ausnahme ausgelöst wird. Clients werden benachrichtigt, dass eine Änderung im Container vorgenommen wurde (identifiziert durch den sender parameter, der an den StructureChangedEventHandlerübergeben wird), ohne dass eine bestimmte Benachrichtigung darüber erfolgt ist, welche untergeordneten Elemente hinzugefügt oder entfernt wurden.

Gilt für:

Weitere Informationen