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


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

Использовать надстройки Visual Studio в Visual Studio 2013 не рекомендуется. Следует обновить надстройки до расширений VSPackage. Дополнительные сведения об обновлении см. в разделе Часто задаваемые вопросы. Преобразование надстроек в расширения VSPackage.

Окна в Visual Studio относятся к одной из двух категорий: окна документов или окна инструментов. Окно документов — это окно, содержание которого изменяется с помощью редактора кода, например текстового файла, HTML или кода внутри класса. Окно инструментов содержит один или несколько элементов управления, таких как кнопки, текст, поля со списком и т. д. Интегрированная среда разработки Visual Studio использует элементы управления для выполнения таких задач, как установка параметров, просмотр ошибок или редактирование элементов проекта. В качестве примеров можно привести окна Вывод, Список задач и Панель элементов. Панель элементов можно свободно перемещать в интегрированной среде разработки или прикреплять к другим окнам инструментов, а также использовать коллекцию LinkedWindows для создания и удаления связей между окнами инструментов в интегрированной среде разработки программным путем. Для получения дополнительной информации см. Практическое руководство. Изменение параметров окон.

Наряду с автоматизацией для манипулирования существующими окнами инструментов можно также создавать собственные пользовательские окна инструментов, используя метод CreateToolWindow2 коллекции Windows2.

Создавая собственное пользовательское окно инструментов, вы можете заполнить его полезными элементами управления для решения задач. Например, можно использовать пользовательское окно инструментов для отображения специализированных инструментов, позволяющих форматировать код, отслеживать и изменять различные настройки, выполнять расширенную отладку или профилирование источника.

Процедура создания пользовательского окна инструментов описана ниже.

  • Создание пользовательского элемента управления (с использованием проекта библиотеки элементов управления Windows).

  • Добавьте в форму необходимые элементы управления (кнопки, текстовые поля и т. д.) и код.

  • Скомпилируйте проект в DLL-библиотеку.

  • Создайте новый проект надстройки Visual Studio (или другой, например проект приложения Windows).

  • С помощью метода CreateToolWindow2 создайте окно инструментов, содержащее новые пользовательские элементы управления.

Перед вызовом CreateToolWindow2 для создания нового окна инструментов необходимо либо перенести пользовательский элемент управления (ControlObject) в ту же сборку, в которую входит надстройка, либо настроить все атрибуты в пользовательском элементе управления таким образом, чтобы он полностью был виден в COM. (Например, проверьте параметр Регистрация для COM-взаимодействия в параметрах компилирования проекта.) Если это не сделать, элемент управления сработает некорректно и CreateToolWindow2 вернут нулевое значение.

Дополнительные образцы окон для каждого языка и образцы кода на сайте в дополнение к приведенным ниже примерам вы найдете на веб-сайте Образцы автоматизации для Visual Studio.

Примечание

Если вы попытаете установить какое-либо состояние видимости для нового окна инструментов (например, высоту, ширину или положение) до того, как окно станет видимым, возникнет ошибка.Прежде чем настраивать такие параметры, убедитесь, что окно стало видимым.

Примечание

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

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

В следующем примере показано, как создать окно инструментов в Visual Basic и Visual C#.

Примечание

Указанный код должен быть выполнен в надстройке. Выполнить его в макросе нельзя.

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

  • Создайте пользовательский элемент управления в проекте библиотеки элементов управления Windows. Примите имя по умолчанию "WindowsControlLibrary1" или измените имя параметра asmPath в приведенном ниже коде таким образом, чтобы оно совпадало с именем проекта библиотеки элементов управления Windows.

    Также в коде можно сослаться на уже существующий элемент управления.

Примечание

Класс пользовательского элемента управления GuidAttribute должен быть присоединен к определению класса.

  1. Создайте новый проект надстройки.

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

  2. Замените метод OnConnection надстройки на следующий:

    Public Sub OnConnection(ByVal application As Object, ByVal _
    connectMode As ext_ConnectMode, ByVal addInInst As Object, _
    ByRef custom As Array) Implements IDTExtensibility2.OnConnection
        Try
            ' ctlProgID - the ProgID for your user control.
            ' asmPath - the path to your user control DLL.
            ' guidStr - a unique GUID for the user control.
            Dim ctlProgID, asmPath, guidStr As String
            ' Variables for the new tool window that will hold
            ' your user control.
            Dim toolWins As EnvDTE80.Windows2
            Dim toolWin As EnvDTE.Window
            Dim objTemp As Object = Nothing
    
            _applicationObject = CType(application, DTE2)
            _addInInstance = CType(addInInst, AddIn)
            ctlProgID = "WindowsControlLibrary2.UserControl1"
            ' Replace the <Path to VS Project> with the path to
            ' the folder where you created the WindowsCotrolLibrary.
            ' Remove the line returns from the path before 
            ' running the add-in.
            asmPath = "<Path to VS Project>\My _
              Documents\Visual Studio 2013\Projects\ _
              WindowsControlLibrary2\WindowsControlLibrary2\_
              bin\Debug\WindowsControlLibrary2.dll"
            guidStr = "{E9C60F2B-F01B-4e3e-A551-C09C62E5F584}"
    
            toolWins = CType(_applicationObject.Windows, Windows2)
            ' Create the new tool window, adding your user control.
            toolWin = toolWins.CreateToolWindow2(_addInInstance, _
              asmPath, ctlProgID, "MyNewToolwindow", guidStr, objTemp)
            ' The tool window must be visible before you do anything 
            ' with it, or you will get an error.
            If Not toolWin Is Nothing Then
                toolWin.Visible = True
            End If
               ' Uncomment the code below to set the new tool window's
               ' height and width, and to close it.
            ' MsgBox("Setting the height to 500 and width to 400...")
            ' toolWin.Height = 500
            ' toolWin.Width = 400
            ' MsgBox("Closing the tool window...")
            ' toolWin.Close(vsSaveChanges.vsSaveChangesNo)
    
        Catch ex As Exception
            MsgBox("Exception: " & ex.ToString)
        End Try
    End Sub
    
    // Before running, add a reference to System.Windows.Forms, 
    // using System.Windows.Forms, to the top of the class.
    public void OnConnection(object application, 
    ext_ConnectMode connectMode, object addInInst, ref Array custom)
    {
        try
        {
            // ctlProgID - the ProgID for your user control.
            // asmPath - the path to your user control DLL.
            // guidStr - a unique GUID for the user control.
            string ctlProgID, asmPath, guidStr;
            // Variables for the new tool window that will hold
            // your user control.
            EnvDTE80.Windows2 toolWins;
            EnvDTE.Window toolWin;
            object objTemp = null;
    
            _applicationObject = (DTE2)application;
            _addInInstance = (AddIn)addInInst;
            ctlProgID = "WindowsControlLibrary2.UserControl1";
            // Replace the <Path to VS Project> with the path to
            // the folder where you created the WindowsCotrolLibrary.
            // Remove the line returns from the path before 
            // running the add-in.
            asmPath = @"c:\My Documents\Visual Studio 2013\Projects\
              WindowsControlLibrary2\WindowsControlLibrary2\bin\
              Debug\WindowsControlLibrary2.dll";
            guidStr = "{E9C60F2B-F01B-4e3e-A551-C09C62E5F584}";
    
            toolWins = (Windows2)_applicationObject.Windows;
            // Create the new tool window, adding your user control.
            toolWin = toolWins.CreateToolWindow2(_addInInstance, 
              asmPath, ctlProgID, "MyNewToolwindow", guidStr, 
              ref objTemp);
            // The tool window must be visible before you do anything 
            // with it, or you will get an error.
            if (toolWin != null)
            {
                toolWin.Visible = true;
            }
            // Set the new tool window's height and width, 
            // and then close it.
            System.Windows.Forms.MessageBox.Show("Setting the height 
            to 500 and width to 400...");
            toolWin.Height = 500;
            toolWin.Width = 400;
            System.Windows.Forms.MessageBox.Show
              ("Closing the tool window...");
            toolWin.Close(vsSaveChanges.vsSaveChangesNo);
        }
        catch (Exception ex)
        {
            System.Windows.Forms.MessageBox.Show("Exception: " 
              + ex.Message);
        }
    }
    

    Примечание. Предыдущий код требует ссылки на пространство имен System.Windows.Forms.

  3. Измените значения переменных ctlProgID, asmPath, и guidStr для отражения пользовательского элемента управления.

  4. Постройте и запустите проект.

  5. В меню Сервис щелкните Диспетчер надстроек, чтобы активировать надстройку.

Новое окно инструментов появится в интегрированной среде разработки. Вы можете переместить его в любое место или прикрепить к другим окнам.

См. также

Задачи

Практическое руководство. Изменение параметров окон

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

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

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

Управление параметрами

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

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

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

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

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