Condividi tramite


Procedura: creare e controllare finestre degli strumenti

I componenti aggiuntivi di Visual Studio sono deprecati in Visual Studio 2013. È consigliabile effettuare l'aggiornamento dei componenti aggiuntivi alle estensioni di VSPackage. Per altre informazioni sull'aggiornamento, vedere Domande frequenti: conversione di componenti aggiuntivi in VSPackage Extensions.

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 usa 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 usare la raccolta LinkedWindows per collegare o scollegare a livello di codice le finestre degli strumenti nell'IDE. Per altre informazioni, vedere Procedura: modificare le caratteristiche delle finestre.

Oltre a usare l'automazione per modificare finestre degli strumenti esistenti, è possibile creare finestre degli strumenti personalizzate con il metodo CreateToolWindow2 della raccolta Windows2.

Nelle finestre degli strumenti personalizzate è possibile inserire i controlli per eseguire le attività desiderate. È ad esempio possibile usare una finestra degli strumenti personalizzata per visualizzare strumenti specializzati per formattare il codice, tenere traccia e modificare le impostazioni delle variabili oppure eseguire attività avanzate di debug o la profilatura del codice sorgente.

Di seguito è riportata la procedura per la creazione di una finestra degli strumenti personalizzata:

  • Creare un controllo utente (usando 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.

  • Usare 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 nel controllo utente in modo da 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 effettuerà correttamente il marshalling e il metodo CreateToolWindow2 restituirà un valore null.

Oltre agli esempi riportati di seguito, sono disponibili altri esempi di finestre degli strumenti per ogni linguaggio nonché altri esempi di codice nel sito Web Esempi di automazione per Visual Studio.

Nota

Se si tanta di impostare uno degli stati di visibilità della nuova finestra degli strumenti, ad esempio 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 essere diversi da quelli descritti nella Guida a seconda delle impostazioni attive o dell'edizione del programma.Queste procedure sono state sviluppate con le Impostazioni generali per lo sviluppo attive.Per modificare le impostazioni, scegliere Importa ed Esportaimpostazioni dal menu Strumenti.Per altre informazioni, vedere Personalizzazione delle impostazioni di sviluppo in Visual Studio.

Creazione di una finestra degli strumenti personalizzata

L'esempio seguente illustra come creare una finestra degli strumenti in Visual Basic e Visual C#.

Nota

Il seguente codice deve essere eseguito in un componente aggiuntivo, non in una macro.

Per creare una finestra degli strumenti personalizzata

  • 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.

Nota

La classe del controllo utente deve disporre di un oggetto GuidAttribute associato alla definizione di classe.

  1. Creare un nuovo progetto di componente aggiuntivo.

    Per informazioni, vedere Procedura: creare un componente aggiuntivo.

  2. 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 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   Il codice precedente richiede un riferimento allo spazio dei nomi System.Windows.Forms.

  3. Modificare i valori delle variabili ctlProgID, asmPath e guidStr per riflettere il controllo utente.

  4. Compilare ed eseguire il progetto.

  5. Nel menu Strumenti fare clic su Gestione componenti aggiuntivi 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 a oggetti di automazione

Altre risorse

Creazione e controllo delle finestre di ambiente

Creazione di componenti aggiuntivi e di procedure guidate

Riferimenti su Extensibility e automazione