UIHierarchy (Interfaz)
Actualización: noviembre 2007
Representa las ventanas de herramientas estándar del entorno de desarrollo integrado (IDE) que utilizan árboles de datos jerárquicos, como el Explorador de soluciones, el Explorador de servidores y el Explorador de macros.
Espacio de nombres: EnvDTE
Ensamblado: EnvDTE (en EnvDTE.dll)
Sintaxis
<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
Comentarios
El objeto UIHierarchy proporciona un modelo de objetos común para las ventanas de herramientas estándar que presentan los datos jerárquicos en una vista de árbol. Puede seleccionar elementos independientemente de que el estado de expansión del árbol muestre el elemento. Al seleccionar un elemento que no aparece en la expansión de árbol actual, el árbol se expande para mostrarlo.
Este objeto se obtiene mediante Window.Object en cualquiera de las ventanas de herramientas estándar de vista de árbol.
Puesto que el objeto UIHierarchy representa cualquier ventana de tipo vista de árbol, se trata de un objeto Window. Su propiedad UIHierarchyItems devuelve la colección de nodos de nivel superior de la ventana especificada. En el Explorador de soluciones sólo hay un nodo de nivel superior, la solución. En el Explorador de macros sólo hay también un nodo de nivel superior, el nodo Macros. Esto significa que los nodos del proyecto no se encuentran en la colección UIHierarchyItems de la ventana, sino en la colección del nodo de nivel superior.
Teniendo esto en cuenta, hay dos maneras de obtener acceso a un nodo concreto (UIHierarchyItem):
Utilizar el método GetItem para hacer referencia directa al nodo deseado.
Utilizar UIHierarchyItems.Item.UIHierarchyItems... (colección/elemento/colección... modelo).
Para tener un mayor conocimiento sobre el anidamiento de un nodo, siga usando este patrón. Por ejemplo, para desplazarse hasta el segundo nodo por debajo del nodo de nivel superior, utilice UIHierarchy.UIHierarchyItems.Item(1).UIHierarchyItems.Item(2).
A continuación se muestran ejemplos acerca de cómo usar ambas técnicas para obtener acceso a un nodo de nivel inferior.
Ejemplos
En este ejemplo se utiliza la estrategia del método GetItem para obtener acceso a un nodo de 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
En este ejemplo se utiliza la estrategia UIHierarchyItems.Item.UIHierarchyItems para obtener acceso a un nodo de 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