AutomationInteropProvider.RaiseStructureChangedEvent Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Löst ein Ereignis aus, wenn sich die Benutzeroberflächenautomatisierung Struktur 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 Element, das dem Ereignis zugeordnet ist.
Informationen zum Ereignis.
Beispiele
Das folgende Beispiel zeigt, wie Sie ein Ereignis auslösen, wenn untergeordnete Elemente einem benutzerdefinierten Listenfeld 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 der Strukturstruktur sind untergeordnete Elemente, die einem Listenfeld hinzugefügt oder daraus entfernt 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 von Benutzeroberflächenautomatisierung gibt es jedoch keine einfache Möglichkeit für eine Instanz eines Anbieters, seinen Laufzeitbezeichner zu ermitteln. Die GetRuntimeId-Methode gibt normalerweise ein Array zurück, das AppendRuntimeId enthält, eine magische Zahl, die das Benutzeroberflächenautomatisierung System anweist, einen eindeutigen Identifer für jede Instanz des Steuerelements zu erstellen. Der von GetRuntimeId ihnen bereitgestellte Rohwert sollte nicht in Ereignissen verwendet werden, da er für Clients bedeutungslos ist und nicht verwendet werden kann, um eine bestimmte Instanz zu identifizieren.
Aufgrund dieser Einschränkung sind Ereignisse vom Typ ChildAdded und ChildRemoved nicht sehr nützlich. Verwenden Sie alternativ immer ChildrenBulkAdded 0 und ChildrenBulkRemovedübergeben Sie 0 als Laufzeitidentifer. Sie können nicht verwenden null, da dadurch eine Ausnahme ausgelöst wird. Clients werden benachrichtigt, dass im Container eine Änderung vorgenommen wurde (identifiziert durch den sender parameter, der an die StructureChangedEventHandlerAdresse übergeben wurde), ohne dass bestimmte Benachrichtigung darüber, welche untergeordneten Elemente hinzugefügt oder entfernt wurden.