Share via


Procedura: creare e controllare finestre degli strumenti

Aggiornamento: novembre 2007

In Visual Studio le finestre sono suddivise in due categorie: finestre di documento e finestre degli strumenti. Il contenuto di una finestra di documento, ad esempio file di testo, HTML o codice all'interno di una classe, può essere modificato tramite l'editor di codice. Una finestra degli strumenti contiene invece uno o più controlli, ad esempio pulsanti, testo, caselle combinate e così via. L'ambiente di sviluppo integrato (IDE) di Visual Studio utilizza i controlli per eseguire attività quali l'impostazione di opzioni, la visualizzazione di errori o la modifica di elementi di progetto. Alcuni esempi sono la finestra di output, l'elenco attività e la Casella degli strumenti. La Casella degli strumenti può essere spostata liberamente nell'IDE o ancorata ad altre finestre degli strumenti ed è possibile utilizzare l'insieme LinkedWindows per collegare o scollegare a livello di codice le finestre degli strumenti nell'IDE. Per ulteriori informazioni, vedere Procedura: modificare le caratteristiche delle finestre.

Oltre a utilizzare l'automazione per modificare finestre degli strumenti esistenti, è possibile creare finestre degli strumenti personalizzate utilizzando il metodo CreateToolWindow2 dell'insieme Windows2.

Nota:

Questo nuovo metodo di Visual Studio 2005 sostituisce il metodo CreateToolWindow utilizzato in Visual Studio 2002 e Visual Studio 2003.

Nelle finestre degli strumenti personalizzate è possibile inserire controlli per eseguire le attività desiderate. È ad esempio possibile utilizzare una finestra degli strumenti personalizzata per visualizzare strumenti specifici per formattare il codice, tenere traccia e modificare le impostazioni delle variabili oppure eseguire attività di debug o di analisi del codice tramite il profiler.

Procedura per la creazione di una finestra degli strumenti personalizzata:

  • Creare un controllo utente (utilizzando un progetto della Libreria di controlli Windows)

  • Aggiungere i controlli desiderati in un form (pulsanti, caselle di testo e così via) e il codice

  • Compilare il progetto in una DLL.

  • Creare un nuovo progetto di componente aggiuntivo di Visual Studio o un progetto di altro tipo, ad esempio un progetto Applicazione Windows.

  • Utilizzare il metodo CreateToolWindow2 per creare una finestra degli strumenti che contenga il nuovo controllo utente.

Prima di richiamare il metodo CreateToolWindow2 per creare una nuova finestra degli strumenti, è opportuno spostare il controllo utente (ControlObject) nello stesso assembly in cui si trova il componente aggiuntivo oppure impostare tutti gli attributi sul controllo utente per renderlo completamente visibile a COM. A questo scopo, ad esempio, è possibile selezionare l'opzione Registra per interoperabilità COM nelle opzioni di compilazione del progetto. Se non si procede in questo modo, il controllo non eseguirà correttamente il marshalling e il metodo CreateToolWindow2 restituirà un valore null.

Oltre agli esempi riportati di seguito, sono disponibili esempi aggiuntivi di finestre degli strumenti per ogni linguaggio e altri esempi di codice sul sito Web Automation Samples for Visual Studio (informazione in lingua inglese).

Nota:

Se si cerca di impostare uno degli stati di visibilità della nuova finestra degli strumenti, ovvero altezza, larghezza o posizione, prima che la finestra degli strumenti sia visibile, si verificherà un errore. Assicurarsi che la finestra sia visibile prima di tentare di impostare queste proprietà.

Nota:

Le finestre di dialogo e i comandi di menu visualizzati potrebbero non corrispondere a quelli descritti nella Guida in linea in quanto dipendono dall'edizione o dalle impostazioni attive. Queste routine sono state sviluppate con le Impostazioni generali per lo sviluppo attive. Per modificare le impostazioni, scegliere Importa/EsportaImpostazioni dal menu Strumenti. Per ulteriori informazioni, vedere Impostazioni di Visual Studio.

Creazione di una finestra degli strumenti personalizzata

Nell'esempio riportato di seguito viene illustrato come creare una finestra degli strumenti in Visual Basic e Visual C#.

Nota:

Il codice riportato di seguito deve essere eseguito in un componente aggiuntivo, non in una macro.

Per creare una finestra degli strumenti personalizzata

  1. Creare un controllo utente in un progetto della Libreria di controlli Windows. Accettare il nome predefinito "WindowsControlLibrary1" oppure assicurarsi di cambiare il nome del parametro asmPath nel codice riportato di seguito affinché corrisponda al nome del progetto della Libreria di controlli Windows.

    In alternativa, all'interno del codice, è possibile fare riferimento a un controllo utente esistente.

  2. Creare un nuovo progetto di componente aggiuntivo.

    Per informazioni, vedere Procedura: creare un componente aggiuntivo.

  3. Sostituire il metodo OnConnection del componente aggiuntivo con quanto riportato di seguito:

    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 toolWins 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 (toolWins == null)
            {
                toolWin.Visible = true;
            }
            // Uncomment the code below to set the new tool window's
            // height and width, and to 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);
        }
    }
    
  4. Generare ed eseguire il progetto.

  5. Scegliere Gestione componenti aggiuntivi dal menu Strumenti per attivare il componente aggiuntivo.

La nuova finestra degli strumenti verrà visualizzata nell'IDE. Sarà possibile spostarla in qualsiasi posizione oppure ancorarla ad altre finestre degli strumenti.

Vedere anche

Attività

Procedura: modificare le caratteristiche delle finestre

Procedura: creare un componente aggiuntivo

Procedura dettagliata: creazione di una procedura guidata

Concetti

Controllo delle impostazioni relative alle opzioni

Grafico del modello oggetto di automazione

Altre risorse

Creazione e controllo delle finestre di ambiente

Creazione di componenti aggiuntivi e di procedure guidate

Riferimenti su extensibility e automazione