Cómo: Crear y controlar ventanas de herramientas
En Visual Studio las ventanas se clasifican en dos categorías: ventanas de documento o ventanas de herramientas.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 ejemplos siguientes, puede encontrar otros ejemplos de ventanas de herramientas para cada lenguaje, al igual que otros ejemplos de código, en el sitio Web Automation Samples for Visual Studio (en inglés).
[!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 del menú Herramientas.Para obtener más información, vea Valores de configuración de 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 System.Runtime.InteropServices.GuidAttribute adjunta a la definición de clase.
Cree un nuevo proyecto de complemento.
Para obtener más información, vea Cómo: Crear un complemento.
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 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 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 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 (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.
Cambie los valores de las variables ctlProgID, guidStr y asmPath de modo que reflejen su control de usuario.
Compile y ejecute el proyecto.
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
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