Для программного взаимодействия с панелью инструментов используются четыре объекта:
□ ToolBox — объект, представляющий саму панель инструментов Toolbox;
□ ToolBoxTabs — коллекция, представляющая вкладки панели;
□ ToolBox Items — коллекция, представляющая элементы внутри вкладки панели;
□ ToolBoxitem — отдельный элемент, отображаемый внутри вкладки панели.
На рис. 11.3 показана иерархия объектов панели Toolbox.
Эти объекты используются в основном для добавления, удаления или изменения элементов, имеющихся в панели Toolbox. Например, при помощи коллекции ToolBoxTabs вы можете легко добавить в панель свою вкладку:
Dim tBox As ToolBox Dim myTab As ToolBoxTab
tBox = DTE.Windows.Item(Constants.vsWindowKindToolbox).Object myTab = tBox.ToolBoxTabs.Add("My TBox Tab")
Вы можете также добавлять элементы на любую вкладку при помощи метода ToolBoxitems. Add, который принимает имя добавляемого элемента, представляющий элемент объект "данных" и перечисление vsToolBoxitemFormat, которое указывает формат элемента. Метод Add использует vsToolBoxitemFormat для того, чтобы определить, как именно надо интерпретировать значение объекта "данных". Например, если вы хотите добавить элемент управления .NET на вкладку, созданную в предыдущем фрагменте кода, то можете сделать это всего одной строкой кода:
myTab.ToolBoxitems.Add("ContosoControl", _
"С:\Contoso\Controls\CalendarControl.dll", _ vsToolBoxitemFormat.vsToolBoxItemFormatDotNETComponent)
Обратите внимание, что в данном случае элемент представлен путем к сборке (которая реализует данный элемент управления) и что он имеет формат vsToolBoxitemFormatDotNET- Component.
В листинге 11.5 содержится функция Visual Basic, которая добавляет вкладку в панель инструментов, добавляет элемент управления и фрагмент текста на вкладку, а затем удаляет вкладку.
Imports EnvDTE Imports EnvDTE80
Imports Microsoft.VisualStudio.CommandBars Imports System.Diagnostics Imports System.Windows.Forms
Public Sub AddAToolBoxTab()
Dim toolBox As ToolBox Dim tabs As ToolBoxTabs Dim tab As ToolBoxTab Dim tabltems As ToolBoxitems Dim win As Window
Try
' Получить ссылку на панель Toolbox
win = DTE.Windows.Item(Constants.vsWindowKindToolbox) toolBox = win.Object
' Получить ссылку на коллекцию вкладок панели Toolbox tabs = toolBox.ToolBoxTabs
' Добавить новую закладку в панель инструментов tab = tabs.Add("New ToolBox Tab")
' Сделать добавленную вкладку активной tab.Activate()
tabltems = tab.ToolBoxItems With tabltems
' Добавить текст в панель Toolbox.
' Щелчок по тексту приведет к его добавлению ' в активный документ...
.Add("Code Comment", "This is some text to add to the toolbox", _ vsToolBoxItemFormat .vsToolBoxItemFormatText)
' Теперь добавим на панель Toolbox элемент управления.
' При добавлении элемента управления вам нужно указать путь к сборке;
' вы можете добавить все классы сборки (как показано далее) или ' только один из них (такой синтаксис см. в документации MSDN)
.Add("My Login Control", _
"С:\MyComponents\Contoso\LoginControl.dll", _ vsToolBoxItemFormat. vsToolBoxItemFormatDotNETComponent)
ч
' Для демонстрации удалим те элементы, которые мы только что добавили, ' а затем удалим и созданную новую вкладку. . .
' Выдать окно сообщения для подтверждения удалений MessageBox.Show("Click OK to delete the tab and added items.", _ "Delete Toolbox Tab Items", MessageBoxButtons.OK, _
MessageBoxIcon.Information)
' Удалить вкладку tab.Delete()
End With
Catch ex As Exception
MsgBox("Error: " & ex.ToString())
End Try End Sub