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


Практическое руководство. Управление обозревателем решений

Обозреватель решений — это окно инструментов в интегрированной среде разработки Visual Studio, в котором отображается содержимое решения c проектами решения и каждым элементом проекта. Как и для любого другого окна инструментов в Visual Studio, для окна обозревателя решений можно изменять физические параметры, такие как размер, положение и то, является ли оно прикрепленным или свободным. Дополнительные сведения об управлении этим окном инструментов, а также другими окнами инструментов Visual Studio см. в разделе Практическое руководство. Изменение параметров окон.

Обозреватель решений не имеет собственных объектов автоматизации как таковых, но в определенной степени содержимым его иерархии можно управлять при помощи UIHierarchy. Для управления проектами и элементами проекта в решении можно использовать модель автоматизации проекта. Дополнительные сведения см. в разделе Управление проектами и решениями.

Примечание

Отображаемые диалоговые окна и команды меню могут отличаться от описанных в справке в зависимости от текущих настроек или выпуска.Эти процедуры были разработаны с обычными параметрами разработки.Чтобы изменить настройки, в меню Сервис выберите команду Импорт и экспортпараметров.Дополнительные сведения см. в разделе Работа с параметрами.

Управление обозревателем решений при помощи UIHierarchy

  1. Если Обозреватель решений еще не отображается, в меню Вид выберите команду Обозреватель решений.

  2. Откройте проект с большим количеством элементов, такой как проект надстройки.

  3. В Обозревателе решений щелкните узел, который имеет, по меньшей мере, два подузла.

  4. Выполните следующий код.

Пример

В следующем примере демонстрируется управление Обозревателем решений при помощи UIHierarchy.

Imports System.Text
Imports EnvDTE
Imports EnvDTE80
Imports EnvDTE90
Imports EnvDTE100Public Sub OnConnection(ByVal application As Object, ByVal _
  connectMode As ext_ConnectMode, ByVal addInInst As Object, _
  ByRef custom As Array) Implements IDTExtensibility2.OnConnection
    _applicationObject = CType(application, DTE2)
    _addInInstance = CType(addInInst, AddIn)
    ' Pass the applicationObject member variable to the code example.
    slnExplUIHierarchyExample(_applicationObject)
End Sub

Sub slnExplUIHierarchyExample(ByVal dte As DTE2)
    Dim UIH As UIHierarchy = dte.ToolWindows.SolutionExplorer
    ' Requires a reference to System.Text.
    ' Set a reference to the first level nodes in Solution Explorer. 
    ' Automation collections are one-based.
    Dim UIHItem As UIHierarchyItem = UIH.UIHierarchyItems.Item(1)
    Dim file As UIHierarchyItem
    Dim sb As New StringBuilder

    ' Iterate through first level nodes.
    For Each file In UIHItem.UIHierarchyItems
        sb.AppendLine(file.Name)
        ' Iterate through second level nodes (if they exist).
        Dim subitem As UIHierarchyItem
        For Each subitem In file.UIHierarchyItems
            sb.AppendLine("   " & subitem.Name)
            ' Iterate through third level nodes (if they exist).
            Dim subSubItem As UIHierarchyItem
            For Each subSubItem In subitem.UIHierarchyItems
                sb.AppendLine("        " & subSubItem.Name)
            Next
        Next
    Next
    MsgBox(sb.ToString)
 End Sub
using System.Text;
using EnvDTE;
using EnvDTE80;
using EnvDTE90;
using EnvDTE100;public void OnConnection(object application, ext_ConnectMode 
  connectMode, object addInInst, ref Array custom)
{
    _applicationObject = (DTE2)application;
    _addInInstance = (AddIn)addInInst;
    // Pass the applicationObject member variable to the code example.
    slnExplUIHierarchyExample(_applicationObject);
}

public void slnExplUIHierarchyExample(DTE2 dte)
{
    UIHierarchy UIH = dte.ToolWindows.SolutionExplorer;
    // Requires a reference to System.Text.
    // Set a reference to the first level nodes in Solution Explorer. 
    // Automation collections are one-based.
    UIHierarchyItem UIHItem = UIH.UIHierarchyItems.Item(1);
    StringBuilder sb = new StringBuilder();

    // Iterate through first level nodes.
    foreach ( UIHierarchyItem fid in UIHItem.UIHierarchyItems )
    {
        sb.AppendLine(fid.Name);
        // Iterate through second level nodes (if they exist).
        foreach ( UIHierarchyItem subitem in fid.UIHierarchyItems )
        {
            sb.AppendLine("   "+subitem.Name);
            // Iterate through third level nodes (if they exist).
            foreach ( UIHierarchyItem subSubItem in 
              subitem.UIHierarchyItems )
            {
                sb.AppendLine("        "+subSubItem.Name);
            }
        }
    }
    System.Windows.Forms.MessageBox.Show(sb.ToString());
}

См. также

Задачи

Практическое руководство. Создание надстройки

Пошаговое руководство. Создание мастера

Основные понятия

Знакомство с объектом VSProject2

Диаграмма модели объектов автоматизации

Другие ресурсы

Создание окон среды и управление ими

Создание надстроек и мастеров

Справочник по автоматизации и возможностям расширения среды