Bagikan melalui


AutomationInteropProvider.RaiseStructureChangedEvent Metode

Definisi

Memunculkan peristiwa ketika pohon Automation UI telah berubah.

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

Elemen yang terkait dengan peristiwa.

e
StructureChangedEventArgs

Informasi tentang peristiwa tersebut.

Contoh

Contoh berikut menunjukkan cara menaikkan peristiwa saat anak ditambahkan, atau dihapus dari, kotak daftar kustom.

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

Keterangan

Contoh perubahan struktur pohon adalah elemen anak yang ditambahkan atau dihapus dari kotak daftar, atau diperluas atau diciutkan dalam tampilan pohon.

Ketika elemen anak dihapus, pengidentifikasi runtime elemen, atau kontainernya, diteruskan ke StructureChangedEventArgs konstruktor. Namun, dalam versi Automasi UI saat ini, tidak ada cara mudah bagi instans penyedia untuk menemukan pengidentifikasi runtimenya. Metode ini GetRuntimeId biasanya mengembalikan array yang berisi AppendRuntimeId, angka ajaib yang menginstruksikan sistem Automation UI untuk membuat pengidentifikasi unik untuk setiap instans kontrol. Nilai mentah yang disediakan oleh GetRuntimeId tidak boleh digunakan dalam peristiwa, karena tidak berarti bagi klien dan tidak dapat digunakan untuk mengidentifikasi instans tertentu.

Karena keterbatasan ini, peristiwa jenis ChildAdded dan ChildRemoved tidak terlalu berguna. Sebagai alternatif, selalu gunakan ChildrenBulkAdded dan ChildrenBulkRemoved, melewati 0 sebagai pengidentifikasi runtime. Anda tidak dapat menggunakan null, karena ini akan menimbulkan pengecualian. Klien akan diberi tahu bahwa perubahan telah dilakukan dalam kontainer (diidentifikasi oleh parameter yang sender diteruskan ke StructureChangedEventHandler), tanpa pemberitahuan khusus tentang anak-anak apa yang telah ditambahkan atau dihapus.

Berlaku untuk

Lihat juga