Dinamik araç penceresi açma

Araç pencereleri genellikle menüdeki bir komuttan veya eşdeğer bir klavye kısayolundan açılır. Ancak bazen belirli bir kullanıcı arabirimi bağlamı uygulandığında açılan ve kullanıcı arabirimi bağlamı artık uygulanmadığında kapanan bir araç penceresi gerekebilir. Bu tür araç pencereleri dinamik veya otomatik görünür olarak adlandırılır.

Not

Önceden tanımlanmış kullanıcı arabirimi bağlamlarının listesi için bkz VSConstants.UICONTEXT. .

Başlangıçta dinamik bir araç penceresi açmak istiyorsanız ve oluşturma işleminin başarısız olması mümkünse, arabirimi uygulamanız IVsPackageDynamicToolOwnerEx ve yöntemdeki QueryShowTool hata koşullarını test etmeniz gerekir. Kabuğun başlangıçta açılması gereken dinamik bir araç pencereniz olduğunu bilmesi için paket kaydınıza değeri (1 olarak ayarlanmış) eklemeniz SupportsDynamicToolOwner gerekir. Bu değer standart PackageRegistrationAttributedeğerinin bir parçası olmadığından, bunu eklemek için özel bir öznitelik oluşturmanız gerekir. Özel öznitelikler hakkında daha fazla bilgi için bkz . Uzantıyı kaydetmek için özel kayıt özniteliği kullanma.

Araç penceresini açmak için kullanın FindToolWindow . Araç penceresi gerektiğinde oluşturulur.

Not

Dinamik bir araç penceresi kullanıcı tarafından kapatılabilir. Kullanıcının araç penceresini yeniden açabilmesi için bir menü komutu oluşturmak istiyorsanız, menü komutunun araç penceresini açan kullanıcı arabirimi bağlamında etkinleştirilmesi ve aksi takdirde devre dışı bırakılması gerekir.

Dinamik araç penceresi açmak için

  1. DynamicToolWindow adlı bir VSIX projesi oluşturun ve DynamicWindowPane.cs adlı bir araç penceresi öğesi şablonu ekleyin. Daha fazla bilgi için bkz . Araç penceresiyle uzantı oluşturma.

  2. DynamicWindowPanePackage.cs dosyasında DynamicWindowPanePackage bildirimini bulun. ProvideToolWindowAttribute Araç penceresini kaydetmek için ve ProvideToolWindowVisibilityAttribute özniteliklerini ekleyin.

    [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
    {. . .}
    

    Yukarıdaki öznitelikler, DynamicWindowPane adlı araç penceresini Visual Studio kapatılıp yeniden açıldığında kalıcı olmayan geçici bir pencere olarak kaydeder. DynamicWindowPane her uygulandığında açılır SolutionExists_string ve aksi takdirde kapatılır.

  3. Projeyi derleyin ve hata ayıklamaya başlayın. Deneysel örnek görünmelidir. Araç penceresini görmemeniz gerekir.

  4. Deneysel örnekte bir proje açın. Araç penceresi görünmelidir.