Compartir a través de


Cómo: Crear y controlar ventanas de herramientas

Los complementos de Visual Studio están desusados en Visual Studio 2013. Debe actualizar los complementos a las extensiones de VSPackage. Para obtener más información sobre la actualización, vea Preguntas más frecuentes: Convertir complementos en extensiones de VSPackage.

En Visual Studio, las ventanas se dividen en dos categorías: ventanas de documento o ventanas de herramienta. Una ventana de documento es una ventana cuyo contenido se puede modificar a través del editor de código, como un archivo de texto, HTML o código en una clase. Una ventana de herramientas contiene uno o más controles, como botones, texto, cuadros combinados, etc. En el entorno de desarrollo integrado (IDE) de Visual Studio se utilizan controles para realizar tareas como establecer opciones, ver errores o editar elementos de proyectos. Algunos ejemplos son la ventana de salida, la Lista de tareas y el Cuadro de herramientas. El Cuadro de herramientas se puede desplazar libremente en el IDE o acoplar con otras ventanas de herramientas, y se puede usar la colección LinkedWindows para vincular o desvincular mediante programación las ventanas de herramientas en el IDE. Para obtener más información, vea Cómo: Cambiar las características de las ventanas.

Además de utilizar la automatización para manipular las ventanas de herramientas existentes, también puede crear sus propias ventanas de herramientas mediante el método CreateToolWindow2 de la colección Windows2.

Al crear su propia ventana de herramientas personalizada, puede rellenarla de controles útiles para la ejecución de las tareas. Puede, por ejemplo, utilizar una ventana de herramientas personalizada para mostrar herramientas especiales destinadas a dar formato al código, efectuar un seguimiento de las configuraciones de variables y modificarlas o realizar tareas de depuración avanzadas o análisis de origen.

El procedimiento para crear una ventana de herramientas personalizada consiste en:

  • Crear un control de usuario (mediante un proyecto de la Biblioteca de controles de Windows).

  • Agregar código y controles concretos a un formulario (botones, cuadros de texto, etc.).

  • Compilar el proyecto en un archivo DLL.

  • Crear un proyecto de complemento (u otro proyecto, como un proyecto de aplicación para Windows) de Visual Studio.

  • Usar el método CreateToolWindow2 para crear una ventana de herramientas destinada a hospedar el nuevo control User.

Antes de invocar CreateToolWindow2 para crear una ventana de herramientas nueva, desplace el control User (ControlObject) al mismo ensamblado que el complemento o establezca todos los atributos de dicho control de forma que sea totalmente visible para COM. (Por ejemplo, active la opción Registrar para interoperabilidad COM en las opciones de compilación del proyecto.) Si no hace esto, el control no calculará correctamente las referencias y CreateToolWindow2 devolverá un valor nulo.

Además de los siguientes ejemplos, encontrará más muestras de ventanas de herramientas para cada lenguaje, además de otros ejemplos de código, en el sitio web Muestras de automatización para Visual Studio.

Nota

Si intenta establecer cualquiera de los estados de visibilidad de la nueva ventana de herramientas (como alto, ancho o posición) antes de que se vea la ventana de herramientas, obtendrá un error.Asegúrese de que la ventana se ve antes de intentar establecer propiedades de ese tipo.

Nota

Los cuadros de diálogo y comandos de menú que se ven pueden diferir de los descritos en la Ayuda, en función de los valores de configuración o de edición activos.Estos procedimientos se han desarrollado con la Configuración de desarrollo general activa.Para cambiar la configuración, elija la opción Importar y Exportarconfiguraciones en el menú Herramientas.Para obtener más información, vea Personalizar la configuración de desarrollo en Visual Studio.

Crear una ventana de herramientas personalizada

En el ejemplo siguiente se muestra cómo crear una ventana de herramientas en Visual Basic y Visual C#.

Nota

El código siguiente se debe ejecutar en un complemento; no se puede ejecutar en una macro.

Para crear una ventana de herramientas personalizada

  • Cree un control de usuario en un proyecto de Biblioteca de controles de Windows. Acepte el nombre predeterminado "WindowsControlLibrary1" o asegúrese de cambiar el nombre del parámetro asmPath en el código siguiente para que coincida con el nombre del proyecto de la Biblioteca de controles de Windows.

    O bien, también puede hacer referencia a un control de usuario existente en el código.

Nota

Su clase de control de usuario debe tener una clase GuidAttribute adjunta a la definición de clase.

  1. Cree un nuevo proyecto de complemento.

    Para obtener más información, vea Cómo: Crear un complemento.

  2. Reemplace el método OnConnection del complemento por lo siguiente:

    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);
        }
    }
    

    Nota   El código anterior requiere una referencia al espacio de nombres System.Windows.Forms.

  3. Cambie los valores de las variables ctlProgID, asmPath y guidStr de modo que reflejen su control de usuario.

  4. Compile y ejecute el proyecto.

  5. En el menú Herramientas, haga clic en Administrador de complementos para activar el complemento.

Verá que la nueva ventana de herramientas flota en el IDE. Puede moverla en cualquier dirección o acoplarla con otras ventanas de herramientas.

Vea también

Tareas

Cómo: Cambiar las características de las ventanas

Cómo: Crear un complemento

Tutorial: Crear un asistente

Conceptos

Controlar la configuración de opciones

Gráfico del modelo de objetos de automatización

Otros recursos

Crear y controlar las ventanas del entorno

Crear complementos y asistentes

Referencia de automatización y extensibilidad