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


Windows2.CreateToolWindow2 - метод

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

Пространство имен:  EnvDTE80
Сборка:  EnvDTE80 (в EnvDTE80.dll)

Синтаксис

'Декларация
Function CreateToolWindow2 ( _
    Addin As AddIn, _
    Assembly As String, _
    Class As String, _
    Caption As String, _
    GuidPosition As String, _
    <OutAttribute> ByRef ControlObject As Object _
) As Window
Window CreateToolWindow2(
    AddIn Addin,
    string Assembly,
    string Class,
    string Caption,
    string GuidPosition,
    out Object ControlObject
)
Window^ CreateToolWindow2(
    AddIn^ Addin, 
    String^ Assembly, 
    String^ Class, 
    String^ Caption, 
    String^ GuidPosition, 
    [InAttribute] [OutAttribute] Object^% ControlObject
)
abstract CreateToolWindow2 : 
        Addin:AddIn * 
        Assembly:string * 
        Class:string * 
        Caption:string * 
        GuidPosition:string * 
        ControlObject:Object byref -> Window 
function CreateToolWindow2(
    Addin : AddIn, 
    Assembly : String, 
    Class : String, 
    Caption : String, 
    GuidPosition : String, 
    ControlObject : Object
) : Window

Параметры

  • Addin
    Тип: EnvDTE.AddIn
    Экземпляр надстройки, создающей инструментальное окно.
  • Assembly
    Тип: System.String
    Полное имя или путь к файлу сборки, содержащей пользовательский элемент управления.
  • Class
    Тип: System.String
    Полное имя класса, реализующего пользовательский элемент управления.
  • Caption
    Тип: System.String
    Заголовок, отображаемый в новом инструментальном окне.
  • GuidPosition
    Тип: System.String
    Уникальный идентификатор нового окна.(Может использоваться для поиска окна в коллекции Windows.)
  • ControlObject
    Тип: System.Object%
    Пользовательский элемент управления, который следует разместить в новом инструментальном окне.

Возвращаемое значение

Тип: EnvDTE.Window
Объект Window.

Заметки

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

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

Дополнительные примеры использования этого метода см. в примере ToolWindow на веб-странице "Образцы автоматизации Visual Studio" ( Automation Samples): https://www.microsoft.com/downloads/details.aspx?familyid=3ff9c915-30e5-430e-95b3-621dccd25150&displaylang=en.Сведения о создании элементов ActiveX управления см. в разделе Создание элемента управления ActiveX MFC.

Примеры

В следующем примере необходимо предварительно создать пользовательский элемент управления путем создания библиотеки элементов управления Windows.Запомните имя проекта и класса элемента управления, который будет использоваться в следующем коде.Измените строку пути к сборке на путь к каталогу, в котором содержится DLL-файл пользовательского элемента управления.Кроме того, в коде предусмотрена замена метода OnConnection проекта надстройки.

[C#]

public void OnConnection(object application, ext_ConnectMode 
  connectMode, object addInInst, ref Array custom)
{
    _applicationObject = (DTE2)application;
    _addInInstance = (AddIn)addInInst;
    EnvDTE80.Windows2 wins2obj;
    AddIn addinobj;
    object ctlobj = null;
    Window newWinobj;

    // A toolwindow must be connected to an add-in, so this line 
    // references one.
    addinobj = _applicationObject.AddIns.Item(1);
    wins2obj = (Windows2)_applicationObject.Windows;

    // This section specifies the path and class name of the windows 
    // control that you want to host in the new tool window, as well as 
    // its caption and a unique GUID.
    string assemblypath = "C:\\temp\\WindowsControlLibrary1.dll";
    string classname = "WindowsControlLibrary1.UserControl1";
    string guidpos = "{426E8D27-3D33-4FC8-B3E9-9883AADC679F}";
    string caption = "CreateToolWindow2 Test";

    // Create the new tool window and insert the user control in it.
    newWinobj = wins2obj.CreateToolWindow2(addinobj, assemblypath, 
      classname, caption, guidpos, ref ctlobj);
    newWinobj.Visible = true;
}

Безопасность платформы .NET Framework

См. также

Ссылки

Windows2 Интерфейс

EnvDTE80 - пространство имен

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

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

Практическое руководство. Компиляция и выполнение примеров кода модели объектов автоматизации