Практическое руководство. Управление обозревателем решений
Обозреватель решений — это окно инструментов в интегрированной среде разработки Visual Studio, в котором отображается содержимое решения c проектами решения и каждым элементом проекта. Как и для любого другого окна инструментов в Visual Studio, для окна обозревателя решений можно изменять физические параметры, такие как размер, положение и то, является ли оно прикрепленным или свободным. Дополнительные сведения об управлении этим окном инструментов, а также другими окнами инструментов Visual Studio см. в разделе Практическое руководство. Изменение параметров окон.
Обозреватель решений не имеет собственных объектов автоматизации как таковых, но в определенной степени содержимым его иерархии можно управлять при помощи UIHierarchy. Для управления проектами и элементами проекта в решении можно использовать модель автоматизации проекта. Дополнительные сведения см. в разделе Управление проектами и решениями.
Примечание
Отображаемые диалоговые окна и команды меню могут отличаться от описанных в справке в зависимости от текущих настроек или выпуска.Эти процедуры были разработаны с обычными параметрами разработки.Чтобы изменить настройки, в меню Сервис выберите команду Импорт и экспортпараметров.Дополнительные сведения см. в разделе Работа с параметрами.
Управление обозревателем решений при помощи UIHierarchy
Если Обозреватель решений еще не отображается, в меню Вид выберите команду Обозреватель решений.
Откройте проект с большим количеством элементов, такой как проект надстройки.
В Обозревателе решений щелкните узел, который имеет, по меньшей мере, два подузла.
Выполните следующий код.
Пример
В следующем примере демонстрируется управление Обозревателем решений при помощи 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
Диаграмма модели объектов автоматизации