Membuka jendela alat dinamis
Jendela alat biasanya dibuka dari perintah pada menu, atau pintasan keyboard yang setara. Namun, terkadang, Anda mungkin memerlukan jendela alat yang terbuka setiap kali konteks UI tertentu berlaku, dan ditutup ketika konteks UI tidak lagi berlaku. Jenis jendela alat ini disebut dinamis atau terlihat secara otomatis.
Catatan
Untuk daftar konteks UI yang telah ditentukan sebelumnya, lihat VSConstants.UICONTEXT.
Jika Anda ingin membuka jendela alat dinamis saat startup, dan mungkin pembuatan gagal, Anda harus menerapkan IVsPackageDynamicToolOwnerEx antarmuka dan menguji kondisi kegagalan dalam QueryShowTool metode . Agar shell mengetahui bahwa Anda memiliki jendela alat dinamis yang harus dibuka saat startup, Anda harus menambahkan SupportsDynamicToolOwner
nilai (diatur ke 1) ke pendaftaran paket Anda. Nilai ini bukan bagian dari standar PackageRegistrationAttribute, jadi Anda harus membuat atribut kustom untuk menambahkannya. Untuk informasi selengkapnya tentang atribut kustom, lihat Menggunakan atribut pendaftaran kustom untuk mendaftarkan ekstensi.
Gunakan FindToolWindow untuk membuka jendela alat. Jendela alat dibuat sesuai kebutuhan.
Catatan
Jendela alat dinamis dapat ditutup oleh pengguna. Jika Anda ingin membuat perintah menu sehingga pengguna dapat membuka kembali jendela alat, perintah menu harus diaktifkan dalam konteks UI yang sama yang membuka jendela alat, dan dinonaktifkan sebaliknya.
Untuk membuka jendela alat dinamis
Buat proyek VSIX bernama DynamicToolWindow dan tambahkan templat item jendela alat bernama DynamicWindowPane.cs. Untuk informasi selengkapnya, lihat Membuat ekstensi dengan jendela alat.
Dalam file DynamicWindowPanePackage.cs, temukan deklarasi DynamicWindowPanePackage. ProvideToolWindowAttribute Tambahkan atribut dan ProvideToolWindowVisibilityAttribute untuk mendaftarkan jendela alat.
[ProvideToolWindow(typeof(DynamicWindowPane)] [ProvideToolWindowVisibility(typeof(DynamicWindowPane), VSConstants.UICONTEXT.SolutionExists_string)] [PackageRegistration(UseManagedResourcesOnly = true)] [InstalledProductRegistration("#110", "#112", "1.0", IconResourceID = 400)] // Info on this package for Help/About [ProvideMenuResource("Menus.ctmenu", 1)] [ProvideToolWindow(typeof(DynamicToolWindow.DynamicWindowPane))] [Guid(DynamicWindowPanePackage.PackageGuidString)] public sealed class DynamicWindowPanePackage : Package {. . .}
Atribut di atas mendaftarkan jendela alat bernama DynamicWindowPane sebagai jendela sementara yang tidak bertahan saat Visual Studio ditutup dan dibuka kembali. DynamicWindowPane dibuka setiap kali SolutionExists_string berlaku, dan ditutup sebaliknya.
Bangun proyek dan mulai penelusuran kesalahan. Instans eksperimental akan muncul. Anda seharusnya tidak melihat jendela alat.
Buka proyek dalam instans eksperimental. Jendela alat akan muncul.