Condividi tramite


Procedura: Per creare una finestra degli strumenti a più istanze

È possibile pianificare una finestra degli strumenti in modo da poter essere più istanze di aperte contemporaneamente. Per impostazione predefinita, le finestre degli strumenti possono avere un'unica istanza aperta.

Utilizzando una finestra degli strumenti a più istanze, è possibile mostrare diverse fonti di informazioni correlate contemporaneamente. Ad esempio, è possibile inserire un controllo multilinea di TextBox in una finestra degli strumenti a più istanze in modo che molti frammenti di codice sono stati contemporaneamente disponibili durante la sessione di programmazione. Analogamente ad esempio, è possibile inserire un controllo di DataGrid e un elenco a discesa in una finestra degli strumenti a più istanze in modo che possa rilevare contemporaneamente diverse origini dati in tempo reale.

Per creare una finestra degli strumenti a più istanze

  1. Per creare una finestra degli strumenti utilizzando il modello importa pacchetto di Visual Studio. Per ulteriori informazioni, vedere Procedura: Per creare una finestra degli strumenti.

  2. aprire il file di pacchetto (ProjectNamePackage.cs o ProjectNamePackage.vb).

  3. Sopra la definizione della classe, individuare l'attributo di ProvideToolWindow e il parametro di MultiInstances=true , come illustrato nell' esempio seguente.

    [ProvideToolWindow(typeof(MyToolWindow), MultiInstances = true)]
    

    Verrà creata una voce del Registro di sistema che consente a più istanze della finestra degli strumenti di coesistere.

  4. Chiamare il metodo di FindToolWindow e impostare il flag di create a false in modo che relativamente tra le istanze esistenti della finestra degli strumenti fino a trovare id disponibile.

  5. Per creare un'istanza della finestra degli strumenti, chiamare il metodo di FindToolWindow e impostarne il id a un valore disponibile e il flag di create a true.

    Per impostazione predefinita, il valore del parametro di id del metodo di FindToolWindow è 0. Questa è una finestra degli strumenti a singola istanza. Per più di un'istanza è ospitata, ogni istanza deve disporre di un idunivoco.

  6. Chiamare il metodo di Show l ' oggetto di IVsWindowFrame restituito dalla proprietà di Frame dell' istanza della finestra degli strumenti.

    Verrà visualizzata la finestra degli strumenti.

Esempio

Per impostazione predefinita, il metodo di ShowToolWindow creato da un supporto del modello del pacchetto una finestra degli strumenti a singola istanza. Di seguito viene illustrato come modificare il metodo di ShowToolWindow per supportare più istanze.

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

Vedere anche

Attività

Procedura: Aprire una finestra degli strumenti a livello di codice

Riferimenti

FindToolWindow

Altre risorse

Finestre degli strumenti