방법: UIHierarchy를 사용하여 트리 뷰 조작

일부 도구에서 Visual Studio, 등의 솔루션 탐색기, 내용을 조작 하는 데 사용할 수 있는 명시적 자동화 개체가 없습니다.그러나 이러한 도구 창에는 프로그래밍 방식으로 액세스할 수 있는 개요 스타일의 계층적 노드 뷰인 트리 뷰가 있습니다.UIHierarchy 개체는 이러한 도구 창의 트리 뷰를 나타냅니다. 이 개체를 사용하여 트리 뷰를 반복하며 노드의 내용을 볼 수 있습니다.

개체 이름

설명

UIHierarchy 개체

지정된 도구 창의 트리 뷰를 나타냅니다.

UIHierarchyItems 컬렉션

트리 뷰의 모든 노드를 나타냅니다.

UIHierarchyItem 개체

트리 뷰의 단일 노드를 나타냅니다.

이러한 개체 및 컬렉션을 사용하여 다음 작업을 수행할 수 있습니다.

  • 트리 뷰에서 하나 또는 여러 개의 노드 선택 및 보기

  • 트리 뷰에서 삽입 지점을 위아래로 이동

  • 선택된 항목의 값을 반환하거나 기본 동작을 수행하도록 지정

ToolWindows 개체 (에서 반환 ToolWindows)에서 다양 한 도구 창을 쉽게 참조할 수 있습니다 Visual Studio.예를 들어, _applicationObject.Windows.Item(EnvDTE.Constants.vsWindowKindOutput)을 사용하는 대신 _applicationObject.ToolWindows.OutputWindow를 사용할 수 있습니다.

[!참고]

표시되는 대화 상자와 메뉴 명령은 활성 설정이나 버전에 따라 도움말에서 설명하는 것과 다를 수 있습니다.이러한 절차는 일반 개발 설정을 사용하여 개발되었습니다.설정을 변경하려면 도구 메뉴에서 설정 가져오기 및 내보내기를 선택합니다.자세한 내용은 Visual Studio 설정을 참조하십시오.

예제

하지만 UIHierarchy 개체를 나타내는 트리 뷰를 가진 거의 모든 도구 창의 내용을 솔루션 탐색기, 도구 창 자체는 여전히입니다는 Window 개체.UIHierarchyItems 속성은 지정된 도구 창의 최상위 노드 컬렉션을 반환합니다.솔루션 탐색기에는 최상위 노드(솔루션)가 하나만 있습니다.이 특정 창의 프로젝트 노드는 창의 아니라 최상위 노드의 컬렉션에에 따라서입니다 UIHierarchyItems 컬렉션입니다.

이 사실을 염두에 두고 다음과 같은 두 가지 방법으로 트리 뷰에서 특정 노드(UIHierarchyItem)에 액세스할 수 있습니다.

  • GetItem 메서드에서 솔루션/프로젝트/항목 패턴을 사용하여 원하는 노드를 직접 참조

  • UIHierarchyItems.Item.UIHierarchyItems... 사용(컬렉션/항목/컬렉션 패턴)

    이 패턴을 반복하면 중첩 노드의 세부 수준으로 탐색할 수 있습니다.예를 들어, 최상위 노드에 종속된 노드로 이동하려면 UIHierarchy.UIHierarchyItems.Item(1).UIHierarchyItems.Item(2)을 사용합니다.

아래 예제에서는 이 두 가지 방법을 사용하여 하위 수준의 노드에 액세스하는 방법을 보여 줍니다.

이러한 추가 기능 참조의 다양 한 멤버를 사용 하는 방법을 보여 주는 예제에는 UIHierarchy 자동화 모델에서 항목을 모두 목록으로 솔루션 탐색기.

첫 번째 예제에서는 GetItem 메서드를 사용하여 솔루션 탐색기에서 참조 노드의 내용에 액세스합니다.추가 기능 코드를 실행하는 방법에 대한 내용은 방법: 자동화 개체 모델 코드의 예제 컴파일 및 실행을 참조하십시오.

[!참고]

예를 들어 솔루션 탐색기 를 메시지 상자에 해당 데이터를 보냅니다.

Imports System.Text

Public Sub OnConnection(ByVal application As Object, ByVal  _
connectMode As ext_ConnectMode, ByVal addInInst As Object,  _
ByRef custom As Array) Implements IDTExtensibility2.OnConnection
    _applicationObject = CType(application, DTE2)
    _addInInstance = CType(addInInst, AddIn)
    listSlnExpNodes(_applicationObject)
End Sub

Sub listSlnExpNodes(dte as DTE2)
    ' Requires reference to System.Text for StringBuilder.
    Dim UIH As UIHierarchy = dte.ToolWindows.SolutionExplorer
    ' Set a reference to the first level nodes in Solution Explorer. 
    ' Automation collections are one-based.
    Dim UIHItem As UIHierarchyItem = _
      UIH.GetItem("MyAddin1\MyAddin1\References")
    Dim file As UIHierarchyItem
    Dim sb As New StringBuilder

    ' Iterate through first level nodes.
    For Each file In UIHItem.UIHierarchyItems
        sb.AppendLine(file.Name)
        ' Iterate through second level nodes (if they exist).
        Dim subitem As UIHierarchyItem
        For Each subitem In file.UIHierarchyItems
            sb.AppendLine("   " & subitem.Name)
        Next
    Next
    MsgBox(sb.ToString)
End Sub
using System.Text;

public void OnConnection(object application, ext_ConnectMode _
  connectMode, object addInInst, ref Array custom)
{
    _applicationObject = (DTE2)application;
    _addInInstance = (AddIn)addInInst;
    listSlnExpNodes(_applicationObject);
}

public void listSlnExpNodes(DTE2 dte)
{
    // Requires reference to System.Text for StringBuilder.
    UIHierarchy UIH = dte.ToolWindows.SolutionExplorer;
    // Set a reference to the first level nodes in Solution Explorer. 
    // Automation collections are one-based.
    UIHierarchyItem UIHItem = 
      UIH.GetItem("MyAddin1\\MyAddin1\\References");
    StringBuilder sb = new StringBuilder();

   // Iterate through first level nodes.
   foreach ( UIHierarchyItem file in UIHItem.UIHierarchyItems )
   {
       sb.AppendLine(file.Name);
       // Iterate through second level nodes (if they exist).
       foreach ( UIHierarchyItem subitem in file.UIHierarchyItems )
       {
           sb.AppendLine("   "+subitem.Name);
       }
   }
   MessageBox.Show(sb.ToString());
}

다음 예제에서는 사용 하는 방법을 보여 줍니다. UIHierarchy 의 트리 뷰 내용을 나열 하는 솔루션 탐색기 창.

Sub cvTreeView()
    Dim uih As UIHierarchy = DTE.ToolWindows.SolutionExplorer
    Dim uihItem As UIHierarchyItem
    Dim uihItems As UIHierarchyItems = uih.UIHierarchyItems
    Dim msg As String
    For Each uihItem In uihItems
        msg += uihItem.Name & vbCr
    Next
    MsgBox(msg)
End Sub

참고 항목

작업

방법: 솔루션 탐색기 제어

방법: 창 특성 변경

개념

자동화 개체 모델 차트

기타 리소스

환경 창 만들기 및 제어

추가 기능 및 마법사 만들기

자동화 및 확장성 참조