Кроме объектной абстракции window, каждое стандартное окно инструментов в интегрированной среде (командное окно, окно вывода, окно Toolbox и окно Task List) представлено также отдельным типом, который предоставляет уникальные методы и свойства этого окна инструментов. В табл. 11.7 перечислены стандартные окна инструментов и их базовый тип в объектной модели расширяемости.
Для того чтобы сослаться на один из этих объектов, вы начинаете с его представления в виде Window, а затем приводите тип значения Window.Object к соответствующему типу. Например, следующий фрагмент на языке Visual Basic начинается со ссылки Window на окно Task List, а затем использует этот объект Window для получения ссылки на объект
|TaskList:
I Dim windows AS Windows = DTE.Windows Dim twindow As Window =
DTE.Windows.Item(EnvDTE.Constants.vsWindowKindTaskList)
Задачи и окно Task List
Объект TaskList дает вам возможность доступа к элементам, отображенным в данный момент в окне Task List; каждый элемент окна представлен своим объектом Taskitem. Объект Taskitem предоставляет методы и свойства, которые позволяют вам манипулировать элементами задач. Например, вы можете пометить элемент как завершенный, получить или установить номер строки (связанный с задачей), а также изменить приоритет задачи.
Вы можете удалить задачи из списка при помощи использования метода Taskitem. Delete и добавить их при помощи метода Taskitems. Add. Метод Add позволяет вам указать категорию задачи, ее подкатегорию, описание, приоритет, значок и т. д.:
Dim tlist As TaskList = CType(twindow.Object, TaskList)
tlist.Taskitems.Add("Best Practices", "Coding.Style", _
"Use of brace indenting is inconsistent", _ vsTaskPriority.vsTaskPriorityMedium, _ vsTasklcon.vsTasklconUser, True, _
"S:\ContosoCommonFramework\Contoso.Fx.Common\Classl.cs", _
7, True, True)
В табл. 11.8 приведен список членов Taskitem.
Листинг 11.4 содержит короткий макрос на языке Visual Basic, демонстрирующий использование объектов TaskList, Taskitems и Taskitem для перебора задач и изменения их статуса завершения.
Imports EnvDTE
Imports EnvDTE8О
Imports Microsoft.VisualStudio. CoinmandBars Imports System.Diagnostics
Imports System. Windows. Forms
Public Module MacroExamples
Public Sub ToggleAllTasks()
' Сослаться на коллекцию окон
Dim windows As Windows = DTE.Windows
/
' Извлечь окно списка задач из коллекции Dim twindow As Window = _
DTE.Windows.Item(EnvDTE.Constants.vsWindowKindTaskList)
' Преобразовать объект окна в экземпляр TaskList ' при помощи приведения типа его свойства Object Dim tlist As TaskList = CType(twindow.Object, TaskList)
' Перебрать все элементы списка задач For Each task As Taskitem In tlist.Taskitems ' Изменить "галочку" у каждого элемента task.Checked = Not task.Checked Next End Sub End Module