Поделиться через


UIHierarchy - интерфейс

Обновлен: Ноябрь 2007

Представляет стандартные окна инструментов в интегрированной среде разработки (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 представляет любое окно с деревом, он является объектом Window. Его свойство UIHierarchyItems возвращает коллекцию узлов верхнего уровня указанного окна. В Обозревателе решений узлом верхнего уровня является только один узел — решение. В Обозревателе макросов узлом верхнего уровня является только один узел — макрос. Это значит, что узлы проекта принадлежат коллекции узлов верхнего уровня, а не коллекции окна UIHierarchyItems.

Исходя из этого, существует два способа получения доступа к определенному узлу (UIHierarchyItem):

  • С помощью метода GetItem для непосредственной ссылки на нужный узел.

  • С помощью выражения UIHierarchyItems.Item.UIHierarchyItems... (шаблон "коллекция/элемент/коллекция...").

    Чтобы переходить дальше по вложенным узлам, просто продолжайте использовать указанный шаблон. Например, чтобы перейти ко второму узлу от узла верхнего уровня, следует использовать UIHierarchy.UIHierarchyItems.Item(1).UIHierarchyItems.Item(2).

Далее приведены примеры использования обеих способов для получения доступа к узлу нижнего уровня.

Примеры

В этом примере для доступа к узлу в UIHierarchy используется метод GetItem.

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

В этом примере для доступа к узлу в UIHierarchy используется метод UIHierarchyItems.Item.UIHierarchyItems.

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