UIHierarchy 接口

更新:2007 年 11 月

表示集成开发环境 (IDE) 中使用数据的层次结构树的标准工具窗口,如“解决方案资源管理器”、“服务器资源管理器”和“宏资源管理器”。

命名空间:  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 对象表示任何树视图类型的窗口,所以它是一个窗口对象。其 UIHierarchyItems 属性返回指定窗口中顶级节点的集合。在“解决方案资源管理器”中,只有一个顶级节点,即解决方案节点。在“宏资源管理器”中,也只有一个顶级节点,即“宏”节点。这意味着项目节点不在窗口的 UIHierarchyItems 集合中,而是位于顶级节点的集合中。

请记住以上原则,根据以上原则可以使用两种方法来访问某个特定节点 (UIHierarchyItem):

  • 使用 GetItem 方法直接引用所需的节点。

  • 使用 UIHierarchyItems.Item.UIHierarchyItems...(集合/项/集合... 模式)。

    若要定位到更深的节点嵌套中,只需继续使用此模式即可。例如,若要定位到顶级节点下面的第二个节点,应使用 UIHierarchy.UIHierarchyItems.Item(1).UIHierarchyItems.Item(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

此示例使用 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 操作树视图