방법: 동적 도구 창 열기
일반적으로 도구 창에 해당 하는 바로 가기 키 또는 메뉴에서의 명령에서 열립니다. 그러나 때때로, 특정 사용자 인터페이스 (UI) 컨텍스트에 적용 되 고 UI 컨텍스트에 적용 되지 않습니다 닫힙니다 때마다를 엽니다 도구 창의 해야 수 없습니다. 이러한 도구 창 이라고 동적 또는 자동 표시.
참고
미리 정의 된 UI 컨텍스트의 목록을 참조 하십시오. VSConstants UICONTEXT_로 시작 하는 필드를 찾습니다.
시작 시 동적 도구 창을 열려고 하 고 실패를 만들 수 있습니다 구현 해야 합니다 경우는 IVsPackageDynamicToolOwnerEx 인터페이스 및 오류 상태를 테스트는 QueryShowTool 메서드. 시작할 때 작성 해야 하는 동적 도구 창이 나타난다면 셸이 순서에 추가 해야 해당 SupportsDynamicToolOwner 패키지 등록을 (1 설정) 값입니다. 이 값은 표준의 일부가 아닌 PackageRegistrationAttribute, 추가 하 여 사용자 지정 특성을 만들어야 합니다. 사용자 지정 특성에 대한 자세한 내용은 등록 하는 사용자 지정 특성을 사용 하 여 확장을 등록 하려면을 참조하십시오.
사용 FindToolWindow 하 여 도구 창을 엽니다. 도구 창에는 필요에 따라 만들어집니다.
참고
사용자가 동적 도구 창을 닫을 수 있습니다.사용자 도구 창을 다시 열 수 있도록 메뉴에 명령 추가 하려면 그렇지 않으면 사용 안 함으로 확인 하 고 도구 창을 열린 같은 UI 컨텍스트에 메뉴 명령을 활성화 해야 합니다.
동적 도구 창을 열려면
도구 창의 창, 프레임 및 해당 구현 Vspackage를 만듭니다. 자세한 내용은 방법: 도구 창 만들기를 참조하십시오.
도구 창에 등록 Visual Studio 추가 하 여 해당 ProvideToolWindowAttribute 및 ProvideToolWindowVisibilityAttribute 제공 Vspackage를.
<ProvideToolWindow(GetType(DynamicWindowPane), PositionX:=250, PositionY:=250, Width:=160, Height:=180, Transient:=True), _ ProvideToolWindowVisibility(GetType(DynamicWindowPane), "f1536ef8-92ec-443c-9ed7-fdadf150da82"), _ ProvideMenuResource(1000, 1), _ DefaultRegistryRoot("Software\Microsoft\VisualStudio\8.0Exp"), _ PackageRegistration(UseManagedResourcesOnly:=True), _ Guid("01069CDD-95CE-4620-AC21-DDFF6C57F012")> _ Public Class PackageToolWindow Inherits Package
[ProvideToolWindow(typeof(DynamicWindowPane), PositionX = 250, PositionY = 250, Width = 160, Height = 180, Transient = true)] [ProvideToolWindowVisibility(typeof(DynamicWindowPane), /*UICONTEXT_SolutionExists*/"f1536ef8-92ec-443c-9ed7-fdadf150da82")] [ProvideMenuResource(1000, 1)] [DefaultRegistryRoot(@"Software\Microsoft\VisualStudio\8.0Exp")] [PackageRegistration(UseManagedResourcesOnly = true)] [Guid("01069CDD-95CE-4620-AC21-DDFF6C57F012")] public class PackageToolWindow : Package
이 유지 되어 임시 창으로 DynamicWindowPane 라는 도구 창을 등록 때는 Visual Studio 을 닫고 다시. DynamicWindowPane UICONTEXT_SolutionExists 적용 될 때마다 열리고 닫혀 그렇지. 기본 위치와 크기를 지정 합니다. 자세한 내용은 방법: 도구 창에 등록를 참조하십시오.
사용 FindToolWindow 도구 창을 찾을 수 또는 존재 하지 않는 경우 만들 수 있습니다.
' Get the (only) instance. ' The last flag is set to true so that if the tool window does not exists it will be created. Dim window As ToolWindowPane = Me.FindToolWindow(GetType(DynamicWindowPane), 0, True) If (window Is Nothing) Or (window.Frame Is Nothing) Then Throw New NotSupportedException(Resources.CanNotCreateWindow) End If
// Get the (only) instance of this tool window. // The last flag is set to true so that if the tool window does not exists it will be created. ToolWindowPane window = this.FindToolWindow(typeof(DynamicWindowPane), 0, true); if ((null == window) || (null == window.Frame)) { throw new NotSupportedException(Resources.CanNotCreateWindow); }
도구 창에서 도구 창 프레임을 가져옵니다.
Dim windowFrame As IVsWindowFrame = TryCast(window.Frame, IVsWindowFrame)
IVsWindowFrame windowFrame = (IVsWindowFrame)window.Frame;
도구 창을 표시 합니다.
Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(windowFrame.Show())
ErrorHandler.ThrowOnFailure(windowFrame.Show());