Cómo: cree una ventana de herramientas de la Multi-Instancia
Puede programar una ventana de herramientas para que varias instancias de ella pueden abrir simultáneamente. De forma predeterminada, las ventanas de herramientas solo pueden tener una instancia abierto.
Utilizando una ventana de herramientas de la multi-instancia, puede mostrar varias fuentes de información relacionados al mismo tiempo. Por ejemplo, puede colocar un control de varias líneas de TextBox en una ventana de herramientas de la multi-instancia de modo que varios fragmentos de código sean simultáneamente disponibles durante una sesión de programación. También por ejemplo, puede colocar un control de DataGrid y un cuadro de lista desplegable en una ventana de herramientas de la multi-instancia para poder seguir varios orígenes de datos en tiempo real simultáneamente.
para crear una ventana de herramientas de la multi-instancia
Cree una ventana de herramientas mediante la plantilla de paquete de Visual Studio. Para obtener más información, vea Cómo: cree una ventana de herramientas.
Abra el archivo empaquetado (NombreDelProyectoPackage.cs o NombreDelProyectoPackage.vb).
Justo encima de la definición de clase, busque el atributo de ProvideToolWindow y el parámetro de MultiInstances=true , como se muestra en el ejemplo siguiente.
[ProvideToolWindow(typeof(MyToolWindow), MultiInstances = true)]
Esto crea una entrada del Registro que permite a varias instancias de la ventana de herramientas para coexistir.
Llame al método de FindToolWindow y establezca el marcador de create a false de modo que recorra en iteración las instancias existentes de la ventana de herramientas hasta que se encuentre id disponibles.
Para crear una instancia de la ventana de herramientas, llame al método de FindToolWindow y establezca su id un valor disponible y el indicador de create a true.
De forma predeterminada, el valor del parámetro de id del método de FindToolWindow es 0. Esto crea una ventana de herramientas de instancia única. Para más de una instancia está hospedada, cada instancia debe tener su propio idúnico.
Llame al método de Show en el objeto de IVsWindowFrame devuelto por la propiedad de Frame de instancia de la ventana de herramientas.
Muestra la ventana de herramientas.
Ejemplo
De forma predeterminada, el método de ShowToolWindow creado por la plantilla de paquete admite una ventana de herramientas de instancia única. El ejemplo siguiente se muestra cómo modificar el método de ShowToolWindow para admitir varias instancias.
private void ShowToolWindow(object sender, EventArgs e)
{
for (int i = 0; ; i++)
{
// Find existing windows.
var currentWindow = this.FindToolWindow(
typeof(MyToolWindow), i, false);
if (currentWindow == null)
{
// Create the window with the first free ID.
var window = (ToolWindowPane)this.CreateToolWindow(typeof(MyToolWindow), i);
if ((null == window) || (null == window.Frame))
{
throw new NotSupportedException(
Resources.CanNotCreateWindow);
}
IVsWindowFrame windowFrame = (IVsWindowFrame)window.Frame;
// Display the window.
Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(
windowFrame.Show());
break;
}
}
}
Vea también
Tareas
Cómo: Abra una ventana de herramientas mediante programación