AutomationInteropProvider.RaiseStructureChangedEvent Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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.
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.