次の方法で共有


UIHierarchy インターフェイス

更新 : 2007 年 11 月

データの階層ツリーを利用する、統合開発環境 (IDE: integrated development environment) 内の標準ツール ウィンドウを表します。[ソリューション エクスプローラ]、[サーバー エクスプローラ]、[マクロ エクスプローラ] などがあります。

名前空間 :  EnvDTE
アセンブリ :  EnvDTE (EnvDTE.dll 内)

構文

'宣言
<GuidAttribute("72A2A2EF-C209-408C-A377-76871774ADB7")> _
Public Interface UIHierarchy
'使用
Dim instance As UIHierarchy
[GuidAttribute("72A2A2EF-C209-408C-A377-76871774ADB7")]
public interface UIHierarchy
[GuidAttribute(L"72A2A2EF-C209-408C-A377-76871774ADB7")]
public interface class UIHierarchy
public interface UIHierarchy

解説

UIHierarchy オブジェクトは、標準ツール ウィンドウの共通オブジェクト モデルで、階層データをツリー ビュー形式で表します。アイテムの選択は、ツリーを展開したときにアイテムが表示されるかどうかにかかわらず、行うことができます。アイテムを選択したときに、現在展開しているツリーに表示されていない場合、ツリーが展開されてそのアイテムが表示されます。

このオブジェクトは、標準ツリー ビューのツール ウィンドウ上で Window.Object を使用して取得します。

UIHierarchy オブジェクトは、任意のツリー ビュー タイプのウィンドウを表す Window オブジェクトです。このオブジェクトの UIHierarchyItems プロパティは、指定したウィンドウのトップレベル ノードのコレクションを返します。[ソリューション エクスプローラ] には、単一のトップレベル ノードであるソリューションだけが表示されます。また、[マクロ エクスプローラ] にも、単一のトップレベル ノードであるマクロ ノードだけが表示されます。したがって、プロジェクト ノードはウィンドウの UIHierarchyItems コレクションには含まれず、トップレベル ノードのコレクションに含まれます。

この点を考慮に入れると、特定のノード (UIHierarchyItem) にアクセスするには次の 2 つの方法が考えられます。

  • GetItem メソッドを使用して、目的のノードを直接参照する。

  • UIHierarchyItems.Item.UIHierarchyItems... (コレクション/アイテム/コレクション ... というパターン) を使用する。

    深い階層にあるノードに移動する場合は、このパターンを繰り返します。たとえば、トップレベル ノードの下の 2 番目のノードに移動するには、UIHierarchy.UIHierarchyItems.Item(1).UIHierarchyItems.Item(2) を使用します。

この 2 つの方法を使用して低いレベルのノードにアクセスする例を以下に示します。

次の例では、GetItem メソッドを使用して UIHierarchy のノードにアクセスしています。

Sub UIHierarchyExample1()
   'Reference the UIHierarchy, UIHierarchyItem, and OutputWindow objects.
   Dim UIH As UIHierarchy = _
     DTE.Windows.Item(Constants.vsWindowKindMacroExplorer).Object
   Dim samples As UIHierarchyItem = UIH.GetItem("Macros\Samples")
   Dim OWPane As OutputWindowPane = GetOutputWindowPane("List Macros")
   Dim file As UIHierarchyItem

   OWPane.Clear()
   For Each file In samples.UIHierarchyItems
      OWPane.OutputString(file.Name & _
        Microsoft.VisualBasic.Constants.vbCrLf)
      Dim macro As UIHierarchyItem
      For Each macro In file.UIHierarchyItems
         OWPane.OutputString("   " & macro.Name & _
           Microsoft.VisualBasic.Constants.vbCrLf)
      Next
   Next
End Sub

Function GetOutputWindowPane(ByVal Name As String, Optional ByVal show _
  As Boolean = True) As OutputWindowPane
   Dim win As Window = _
     DTE.Windows.Item(EnvDTE.Constants.vsWindowKindOutput)
   If show Then win.Visible = True
   Dim ow As OutputWindow = win.Object
   Dim owpane As OutputWindowPane
   Try
      owpane = ow.OutputWindowPanes.Item(Name)
   Catch e As System.Exception
      owpane = ow.OutputWindowPanes.Add(Name)
   End Try
   owpane.Activate()
   Return owpane
End Function

次の 2 つ目の例では、UIHierarchyItems.Item.UIHierarchyItems の方法を使用して UIHierarchy のノードにアクセスしています。

Sub UIHierarchyExample2()
   Dim UIH As UIHierarchy = _
     DTE.Windows.Item(Constants.vsWindowKindMacroExplorer).Object
     ' Set a reference to the "Samples" node in Macro Explorer. The 
     ' collections are one-based.
     Dim UIHItem As UIHierarchyItem = _
     UIH.UIHierarchyItems.Item(1).UIHierarchyItems.Item(2)
   Dim file As UIHierarchyItem
   Dim OWPane As OutputWindowPane = GetOutputWindowPane("List Macros")
   For Each file In UIHItem.UIHierarchyItems
      OWPane.OutputString(file.Name & _
        Microsoft.VisualBasic.Constants.vbCrLf)
      Dim macro As UIHierarchyItem
      For Each macro In file.UIHierarchyItems
         OWPane.OutputString("   " & macro.Name & _
           Microsoft.VisualBasic.Constants.vbCrLf)
      Next
   Next
End Sub

参照

参照

UIHierarchy メンバ

EnvDTE 名前空間

その他の技術情報

方法 : UIHierarchy を使用してツリー ビューを操作する