Ссылки на окна

Оценить
(0 голоса)

Если вам нужно отыскать конкретное окно, то у вас есть несколько вариантов (оптимальных для разных ситуаций).

Для новичков: главное окно интегрированной среды всегда доступно непосредственно из объекта dte:

Dim IDE As Window IDE = DTE.MainWindow

Очевидно, что если вам нужно выполнить определенное действие с окном интегрированной среды, то это самый быстрый вариант.

Свойство DTE.ActiveWindow также предоставляет прямой и быстрый доступ к объекту Window (в данном случае это текущее активное окно):

Dim CurrentWindow As Window CurrentWindow = DTE.ActiveWindow

Окна инструментов в интегрированной среде (окно команд, окно списка ошибок, окно вы­вода, окна Solution Explorer.и Task List и панель инструментов)— также имеют прямой способ нахождения своих экземпляров объектной модели — для этого используется свойст­во DTE .ToolWindows. Это свойство возвращает объект ToolWindows, который имеет от* дельное свойство для каждого из окон инструментов.

Этот код на Visual Basic получает ссылку на окно Task List и закрывает его:

Dim taskwin As Window

taskwin = DTE.ToolWindows.TaskList taskwin.Close()

И наконец, четвертый способ доступа к окну интегрированной среды — это через коллек­цию DTE. Windows; эта коллекция имеет элемент для каждого окна интегрированной среды. Вы можете получить доступ к окну коллекции либо при помощи целого числа, представ­ляющего собой положение окна в коллекции, либо при помощи объекта или строки, пред­ставляющих то окно, которое вы хотите найти.

Следующий код получает дескриптор окна Solution Explorer:

Dim windows As Windows2 = DTE.Windows

Dim window As Window = windows.Item(Constants.vsWindowKindSolutionExplorer)

Взаимодействие с окнами

В табл. 11.6 перечислены свойства и методы, имеющиеся у каждого объекта window. Описание: image269

Помимо использования простейших свойств (таких как свойств Height и width— для за­проса или изменения размеров окна, либо метода SetFocus для установки фокуса) необхо­димо особо отметить еще несколько свойств.

□    Свойство Document дает вам возможность программным путем взаимодействовать с документом, имеющимся в окне (если он есть).

□    Свойства Project и Projectltem служат для связи» между такими частями API, как Window и Project/Solution; так же как и свойство Document, вы можете использо­вать их для взаимодействия с проектом, который связан с окном (либо с элементом про­екта, таким как файл кода на Visual Basic, текстовый файл или файл ресурсов).

□    Если вы имеете дело с окном инструментов, то метод SetTabPicture предоставляет способ настройки иконки для вкладки, которая отображается тогда, когда окно инстру­мента является частью группы окон с вкладками (например, на вкладке окна панели Toolbox отображается картинка с гаечным ключом и молотком (когда оно является ча­стью группы окон с вкладками)).

□    И (только для окон инструментов) SetSelectionContainer можно использовать для предоставления объектов для отображения в окне Properties. Эта возможность полезна в том случае, если у вас есть нестандартное окно, где вам нужно управлять тем, что ото­бражается в окне Properties, когда окно имеет фокус (все стандартные окна Visual Studio уже делают это для вас).

В листинге 11.2 содержится простой макрос, иллюстрирующий использование объекта Window. В этом примере каждое окно запрашивается для определения его типа, а затем дан­ные о каждом окне выводятся в простом окне сообщения.

Imports EnvDTE Imports EnvDTE8О Imports System.Diagnostics Imports System.Windows.Forms

Public Module MacroExamples

Public Sub InventoryWindows()

1 Получить коллекцию всех открытых окон Dim windows As Windows2 = DTE.Windows

' Сосчитать количество открытых окон

Dim windowCount As Integer = windows.Count $

9 Локальные переменные для цикла и хранения окна и строковых результатов Dim idx As Integer Dim results As String Dim window As Window2

results = windowCount.ToString + " windows open..." + vbCrLf

\

' Итерация по коллекции окон For idx = 1 To windowCount window = windows.Item(idx)

Dim title As String = window.Caption

' Если окно содержит документ, то при помощи Window.Document ' будет возвращен объект Document If Not (window.Document Is Nothing) Then ' Вывести это как окно документа Dim docName As String = window. Document. Name results = results + "Window '" + title + "' is vbCrLf

Else

' Если документа нет, то это окно инструмента ' (окна инструментов документов не содержат) results = results + "Window '" + title + "' is vbCrLf

End If Next

9 Показать результаты MessageBox.Show(results, "Window Documents", MessageBoxButtons.OK, _

MessageBoxIcon.Information)

End Sub End Module

Примечание

Если вы хотите встроить собственные элементы управления в окно инструментов, то вам придется написать надстройку И использовать метод Windows.CreateToolWindow. Мы описываем это в главе 13.

Текстовые окна и панели окон
Visual Studio создана расширяемой
Обзор объектной модели расширяемости
Версии объектной модели
Категории расширяемости

Добавить комментарий


Защитный код
Обновить

© 2017 www.visualstudios.ru. Все права защищены.