다음을 통해 공유


방법: 동적 도구 창 열기

일반적으로 도구 창에 해당 하는 바로 가기 키 또는 메뉴에서의 명령에서 열립니다. 그러나 때때로, 특정 사용자 인터페이스 (UI) 컨텍스트에 적용 되 고 UI 컨텍스트에 적용 되지 않습니다 닫힙니다 때마다를 엽니다 도구 창의 해야 수 없습니다. 이러한 도구 창 이라고 동적 또는 자동 표시.

참고

미리 정의 된 UI 컨텍스트의 목록을 참조 하십시오. VSConstants UICONTEXT_로 시작 하는 필드를 찾습니다.

시작 시 동적 도구 창을 열려고 하 고 실패를 만들 수 있습니다 구현 해야 합니다 경우는 IVsPackageDynamicToolOwnerEx 인터페이스 및 오류 상태를 테스트는 QueryShowTool 메서드. 시작할 때 작성 해야 하는 동적 도구 창이 나타난다면 셸이 순서에 추가 해야 해당 SupportsDynamicToolOwner 패키지 등록을 (1 설정) 값입니다. 이 값은 표준의 일부가 아닌 PackageRegistrationAttribute, 추가 하 여 사용자 지정 특성을 만들어야 합니다. 사용자 지정 특성에 대한 자세한 내용은 등록 하는 사용자 지정 특성을 사용 하 여 확장을 등록 하려면을 참조하십시오.

사용 FindToolWindow 하 여 도구 창을 엽니다. 도구 창에는 필요에 따라 만들어집니다.

참고

사용자가 동적 도구 창을 닫을 수 있습니다.사용자 도구 창을 다시 열 수 있도록 메뉴에 명령 추가 하려면 그렇지 않으면 사용 안 함으로 확인 하 고 도구 창을 열린 같은 UI 컨텍스트에 메뉴 명령을 활성화 해야 합니다.

동적 도구 창을 열려면

  1. 도구 창의 창, 프레임 및 해당 구현 Vspackage를 만듭니다. 자세한 내용은 방법: 도구 창 만들기를 참조하십시오.

  2. 도구 창에 등록 Visual Studio 추가 하 여 해당 ProvideToolWindowAttributeProvideToolWindowVisibilityAttribute 제공 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 적용 될 때마다 열리고 닫혀 그렇지. 기본 위치와 크기를 지정 합니다. 자세한 내용은 방법: 도구 창에 등록를 참조하십시오.

  3. 사용 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);
    }
    
  4. 도구 창에서 도구 창 프레임을 가져옵니다.

    Dim windowFrame As IVsWindowFrame = TryCast(window.Frame, IVsWindowFrame)
    
    IVsWindowFrame windowFrame = (IVsWindowFrame)window.Frame;
    
  5. 도구 창을 표시 합니다.

    Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(windowFrame.Show())
    
    ErrorHandler.ThrowOnFailure(windowFrame.Show());
    

참고 항목

개념

VSPackage 필수 정보