Menerapkan Pola Kontrol Invoke UI Automation
Catatan
Dokumentasi ini ditujukan untuk pengembang .NET Framework yang ingin menggunakan kelas UI Automation terkelola yang ditentukan pada namespace System.Windows.Automation. Untuk informasi terbaru tentang UI Automation, lihat API Automasi Windows: Automasi Antarmuka Pengguna.
Topik ini memperkenalkan pedoman dan konvensi untuk penerapan IInvokeProvider, termasuk informasi tentang peristiwa dan properti. Link ke referensi tambahan tercantum di akhir topik.
Pola InvokePattern kontrol digunakan untuk mendukung kontrol yang tidak menyimpan aktivitas saat diaktifkan, melainkan memulai atau melakukan tindakan yang jelas. Kontrol yang menyimpan aktivitas, seperti kotak centang dan tombol radio, harus menerapkan IToggleProvider dan ISelectionItemProvider masing-masing. Untuk contoh kontrol yang menggunakan pola kontrol Invoke, lihat Pemetaan Pola Kontrol pada Klien UI Automation.
Pedoman dan Konvensi Implementasi
Saat menerapkan pola kontrol Invoke, perhatikan panduan dan konvensi berikut:
Kontrol diterapkan IInvokeProvider jika perilaku yang sama tidak terlihat melalui penyedia pola kontrol lain. Misalnya, jika Invoke metode pada kontrol melakukan tindakan yang sama dengan Expand metode atau Collapse, kontrol tidak boleh diterapkan IInvokeProvider.
Menggunakan kontrol umumnya dilakukan dengan mengklik atau mengklik dua kali atau menekan ENTER, pintasan papan ketik yang telah ditentukan, atau beberapa kombinasi alternatif dari penekanan tombol.
InvokedEvent dinaikkan pada kontrol yang telah diaktifkan (sebagai respons terhadap kontrol yang melakukan tindakan terkait). Jika memungkinkan, aktivitas harus dinaikkan setelah kontrol menyelesaikan tindakan dan kembali tanpa pemblokiran. Aktivitas yang diminta harus dinaikkan sebelum melayani permintaan Invoke dalam skenario berikut:
Tidak mungkin atau praktis untuk menunggu sampai tindakan selesai.
Permintaan ini memerlukan interaksi pengguna.
Tindakan ini memakan waktu dan akan menyebabkan klien panggilan memblokir dalam waktu yang cukup lama.
Jika menggunakan kontrol menyebabkan efek samping yang signifikan, efek samping tersebut harus ditunjukkan melalui HelpText properti . Misalnya, meskipunInvoke tidak berkaitan dengan pemilihan, Invokedapat menyebabkan kontrol lainnya dipilih.
Efek hover (atau mouse-over) umumnya bukan merupakan aktivitas yang Dikehendaki. Namun, kontrol yang melakukan sebuah tindakan (alih-alih menyebabkan efek visual) berdasarkan status hover harus mendukung InvokePattern pola kontrol.
Catatan
Penerapan ini dianggap sebagai masalah aksesibilitas jika kontrol hanya dapat digunakan sebagai akibat dari efek samping terkait mouse.
Menggunakan kontrol berbeda dengan memilih item. Namun, tergantung pada kontrol, menggunakannya dapat menyebabkan item dipilih sebagai efek samping. Misalnya, meminta item daftar dokumen Microsoft Word di folder My Documents memilih item dan membuka dokumen.
Elemen dapat menghilang dari pohon UI Automation segera setelah diminta. Meminta informasi dari elemen yang disediakan melalui panggilan balik aktivitas mungkin gagal karenanya. Informasi cache yang diperoleh sebelumnya adalah solusi yang disarankan.
Kontrol dapat menggunakan beberapa pola kontrol. Misalnya, kontrol Warna Isian pada toolbar Microsoft Excel menggunakan dua InvokePattern pola kontrol ExpandCollapsePattern . ExpandCollapsePattern menunjukkan menu dan InvokePattern mengisi pilihan aktif dengan warna yang dipilih.
Anggota yang Diperlukan untuk IInvokeProvider
Properti dan metode berikut perlu menerapkan IInvokeProvider.
Anggota yang diperlukan | Jenis anggota | Catatan |
---|---|---|
Invoke | metode | Invoke adalah panggilan asinkron dan harus segera kembali tanpa pemblokiran. Perilaku ini sangat penting untuk kontrol yang, secara langsung atau tidak langsung, meluncurkan dialog modal ketika diminta. Setiap klien UI Automation yang membuat acara akan tetap diblokir sampai dialog modal ditutup. |
Pengecualian
Penyedia harus menampilkan pengecualian berikut.
Tipe Pengecualian | Kondisi |
---|---|
ElementNotEnabledException | Jika kontrol tidak diaktifkan. |