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