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


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

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

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

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

Процедура создания пользовательского окна инструментов охватывает следующие действия:

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

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

  • Компиляция проекта в библиотеку DLL.

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

  • Использование метода CreateToolWindow2 для создания окна инструментов для размещения нового пользовательского элемента управления.

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

В дополнение к приведенным в этом разделе примерам, на веб-узле Образцов автоматизации Visual Studio доступны другие примеры окон инструментов для каждого языка, а также другие примеры кода.

Примечание

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

Примечание

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

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

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

Примечание

Следующий код должен быть выполнен внутри надстройки; он не может выполняться внутри макроса.

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

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

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

Примечание

В классе пользовательского элемента управления к определению класса должен быть прикреплен элемент System.Runtime.InteropServices.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 2005\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 toolWins 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 2005\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 (toolWins != 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. В меню Сервис выберите пункт Диспетчер надстроек для активации надстройки.

Созданное окно инструментов будет плавающим в интегрированной среде разработки. Его можно переместить в любое положение или прикрепить к другим окнам инструментов.

См. также

Задачи

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

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

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

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

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

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

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

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

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

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