AutomationInteropProvider.RaiseStructureChangedEvent Metod

Definition

Genererar en händelse när UI Automation träd har ändrats.

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)

Parametrar

provider
IRawElementProviderSimple

Elementet som är associerat med händelsen.

e
StructureChangedEventArgs

Information om händelsen.

Exempel

I följande exempel visas hur du skapar en händelse när underordnade objekt läggs till i eller tas bort från en anpassad listruta.

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

Kommentarer

Ett exempel på en ändring i trädstrukturen är underordnade element som läggs till eller tas bort från en listruta eller expanderas eller komprimeras i en trädvy.

När ett underordnat element tas bort skickas körningsidentifieraren för antingen elementet eller containern till StructureChangedEventArgs konstruktorn. I den aktuella versionen av UI Automation finns det dock inget enkelt sätt för en instans av en provider att identifiera dess körningsidentifierare. Metoden GetRuntimeId returnerar normalt en matris som innehåller AppendRuntimeId, ett magiskt nummer som instruerar UI Automation systemet att skapa en unik identifer för varje instans av kontrollen. Det råvärde som tillhandahålls av GetRuntimeId bör inte användas i händelser, eftersom det är meningslöst för klienter och inte kan användas för att identifiera en specifik instans.

På grund av den här begränsningen är händelser av typen ChildAdded och ChildRemoved inte särskilt användbara. Alternativt använder ChildrenBulkAdded du alltid och ChildrenBulkRemovedskickar 0 som körnings-identifer. Du kan inte använda null, eftersom detta skapar ett undantag. Klienter meddelas om att en ändring har gjorts i containern (identifieras av parametern sender som skickas till StructureChangedEventHandler), utan särskilt meddelande om vilka underordnade objekt som har lagts till eller tagits bort.

Gäller för

Se även