AutomationInteropProvider.RaiseStructureChangedEvent Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee wordt een gebeurtenis gegenereerd wanneer de UI Automation boomstructuur is gewijzigd.
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)
Parameters
- provider
- IRawElementProviderSimple
Het element dat aan de gebeurtenis is gekoppeld.
Informatie over de gebeurtenis.
Voorbeelden
In het volgende voorbeeld ziet u hoe u een gebeurtenis genereert wanneer kinderen worden toegevoegd aan of verwijderd uit een aangepaste keuzelijst.
/// <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
Opmerkingen
Een voorbeeld van een wijziging in de structuurstructuur is onderliggende elementen die worden toegevoegd aan of verwijderd uit een keuzelijst, of worden uitgevouwen of samengevouwen in een structuurweergave.
Wanneer een onderliggend element wordt verwijderd, wordt de runtime-id van het element, of van de container, doorgegeven aan de StructureChangedEventArgs constructor. In de huidige versie van UI Automation is er echter geen eenvoudige manier voor een exemplaar van een provider om de runtime-id te detecteren. De methode GetRuntimeId retourneert normaal gesproken een matrix die AppendRuntimeId bevat, een magic-getal dat het UI Automation systeem instrueert een unieke id te maken voor elk exemplaar van het besturingselement. De onbewerkte waarde die wordt GetRuntimeId verstrekt, mag niet worden gebruikt in gebeurtenissen, omdat deze betekenisloos is voor clients en niet kan worden gebruikt om een specifiek exemplaar te identificeren.
Vanwege deze beperking zijn gebeurtenissen van het type ChildAdded en ChildRemoved niet erg nuttig. Als alternatief kunt u altijd 0 gebruiken ChildrenBulkAdded en ChildrenBulkRemoved0 doorgeven als runtime-id. U kunt dit niet gebruiken null, omdat er een uitzondering optreedt. Clients krijgen een melding dat er een wijziging is aangebracht in de container (geïdentificeerd door de parameter die aan de senderStructureChangedEventHandlerparameter is doorgegeven), zonder specifieke kennisgeving van wat er is toegevoegd of verwijderd.