Otwieranie dynamicznego okna narzędzi
Okna narzędzi są zwykle otwierane z poziomu polecenia w menu lub równoważnego skrótu klawiaturowego. Czasami jednak może być potrzebne okno narzędzia, które jest otwierane za każdym razem, gdy ma zastosowanie określony kontekst interfejsu użytkownika, i zamyka się, gdy kontekst interfejsu użytkownika nie będzie już stosowany. Te typy okien narzędzi są nazywane dynamicznymi lub automatycznie widocznymi.
Uwaga
Aby uzyskać listę wstępnie zdefiniowanych kontekstów interfejsu użytkownika, zobacz VSConstants.UICONTEXT.
Jeśli chcesz otworzyć dynamiczne okno narzędzi podczas uruchamiania i istnieje możliwość niepowodzenia tworzenia, musisz zaimplementować IVsPackageDynamicToolOwnerEx interfejs i przetestować warunki niepowodzenia w metodzie QueryShowTool . Aby powłoka wiedziała, że masz dynamiczne okno narzędzi, które powinno zostać otwarte podczas uruchamiania, musisz dodać wartość (ustawioną SupportsDynamicToolOwner
na 1) do rejestracji pakietu. Ta wartość nie jest częścią standardu PackageRegistrationAttribute, dlatego należy utworzyć atrybut niestandardowy, aby go dodać. Aby uzyskać więcej informacji na temat atrybutów niestandardowych, zobacz Używanie atrybutu rejestracji niestandardowej do rejestrowania rozszerzenia.
Użyj FindToolWindow polecenia , aby otworzyć okno narzędzia. Okno narzędzia jest tworzone zgodnie z potrzebami.
Uwaga
Użytkownik może zamknąć dynamiczne okno narzędzia. Jeśli chcesz utworzyć polecenie menu, aby użytkownik mógł ponownie otworzyć okno narzędzia, polecenie menu powinno być włączone w tym samym kontekście interfejsu użytkownika, który otwiera okno narzędzia i wyłączył w przeciwnym razie.
Aby otworzyć dynamiczne okno narzędzia
Utwórz projekt VSIX o nazwie DynamicToolWindow i dodaj szablon elementu okna narzędzia o nazwie DynamicWindowPane.cs. Aby uzyskać więcej informacji, zobacz Tworzenie rozszerzenia za pomocą okna narzędzi.
W pliku DynamicWindowPanePackage.cs znajdź deklarację DynamicWindowPanePackage. Dodaj atrybuty iProvideToolWindowVisibilityAttribute, ProvideToolWindowAttribute aby zarejestrować okno narzędzia.
[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 {. . .}
Powyższe atrybuty rejestrują okno narzędzi o nazwie DynamicWindowPane jako przejściowe okno, które nie jest utrwalane po zamknięciu i ponownym otwarciu programu Visual Studio. Funkcja DynamicWindowPane jest otwierana za każdym razem, gdy SolutionExists_string ma zastosowanie, i zamknięta w przeciwnym razie.
Skompiluj projekt i rozpocznij debugowanie. Powinno zostać wyświetlone wystąpienie eksperymentalne. Okno narzędzia nie powinno być widoczne.
Otwórz projekt w wystąpieniu eksperymentalnym. Powinno zostać wyświetlone okno narzędzia.