Freigeben über


Gewusst wie: Erstellen und Steuern von Toolfenstern

In Visual Studio werden Fenster in zwei Kategorien unterteilt, nämlich in Dokumentfenster und Toolfenster.Der Inhalt eines Dokumentfensters kann von einem Code-Editor bearbeitet werden, z. B. eine Textdatei, HTML-Code oder Code in einer Klasse.Ein Toolfenster enthält mindestens ein Steuerelement, z. B. eine Schaltfläche, ein Textfeld, ein Kombinationsfeld usw.Die integrierte Entwicklungsumgebung (IDE) von Visual Studio verwendet Steuerelemente, um Aufgaben auszuführen, z. B. zum Festlegen von Optionen, Anzeigen von Fehlern oder Bearbeiten von Projektelementen.Beispiele hierfür sind u. a. das Ausgabefenster, die Aufgabenliste und die Toolbox.Die Toolbox kann in der IDE verschoben oder an andere Toolfenster angedockt werden. Mithilfe der LinkedWindows-Auflistung können Sie Toolfenster in der IDE programmgesteuert miteinander verbinden oder voneinander trennen.Weitere Informationen finden Sie unter Gewusst wie: Ändern des Erscheinungsbilds eines Fensters.

Vorhandene Toolfenster können mithilfe der Automatisierung nicht nur bearbeitet werden; mithilfe der CreateToolWindow2-Methode der Windows2-Auflistung können auch eigene benutzerdefinierte Toolfenster erstellt werden.

Ein eigenes benutzerdefiniertes Toolfenster kann mit hilfreichen Steuerelementen zum Ausführen von Aufgaben gefüllt werden.So können Sie mithilfe eines Toolfensters beispielsweise spezielle Tools anzeigen, die Sie beim Formatieren von Code, Verfolgen und Ändern variabler Einstellungen oder Ausführen erweiterter Debuggeraufgaben oder bei der Quellprofilerstellung unterstützen.

Das Erstellen eines benutzerdefinierten Toolfensters umfasst die folgenden Schritte:

  • Erstellen eines Benutzersteuerelements (mithilfe eines Windows-Steuerelementbibliothek-Projekts)

  • Hinzufügen der gewünschten Steuerelemente zu einem Formular (Schaltflächen, Textfelder usw.) und Code

  • Kompilieren des Projekts in eine DLL

  • Erstellen eines neuen Visual Studio-Add-In-Projekts (oder anderen Projekts, z. B. eines Windows-Anwendungsprojekts)

  • Verwenden Sie die CreateToolWindow2-Methode, um Toolfenster zum Hosten des neuen Benutzersteuerelements zu erstellen.

Bevor Sie CreateToolWindow2 aufrufen, um ein neues Toolfenster zu erstellen, sollten Sie entweder das Benutzersteuerelement (ControlObject) in die gleiche Assembly wie das Add-In verschieben oder alle Attribute des Benutzersteuerelements aktivieren, um es für COM vollständig sichtbar zu machen.(Hierzu gehört z. B. das Aktivieren der Option Für COM-Interop registrieren in den Kompilierungsoptionen des Projekts.) Andernfalls kann das Steuerelement kein ordnungsgemäßes Marshalling durchführen, und CreateToolWindow2 gibt einen NULL-Wert zurück.

Neben den unten stehenden Beispielen finden Sie weitere Toolfensterbeispiele für die verschiedenen Sprachen auf der Website Automation Samples for Visual Studio (auf Englisch).

HinweisHinweis

Beim Versuch, die Sichtbarkeitszustände, wie Höhe, Breite oder Position, des neuen Toolfensters vor dem Einblenden dieses Fensters zu ändern, erhalten Sie eine Fehlermeldung.Stellen Sie sicher, dass das Fenster sichtbar ist, bevor Sie versuchen, solche Eigenschaften festzulegen.

HinweisHinweis

Je nach den aktiven Einstellungen oder der Version unterscheiden sich die Dialogfelder und Menübefehle auf Ihrem Bildschirm möglicherweise von den in der Hilfe beschriebenen.Bei der Entwicklung dieser Verfahren war die Option Allgemeine Entwicklungseinstellungen aktiviert.Wählen Sie im Menü Extras die Option Einstellungen importieren und exportieren aus, um die Einstellungen zu ändern.Weitere Informationen finden Sie unter Visual Studio-Einstellungen.

Erstellen eines benutzerdefinierten Toolfensters

Im folgenden Beispiel wird das Erstellen eines Toolfensters in Visual Basic und Visual C# veranschaulicht.

HinweisHinweis

Der folgende Code muss innerhalb eines Add-In ausgeführt werden. Er kann nicht innerhalb eines Makros ausgeführt werden.

So erstellen Sie ein benutzerdefiniertes Toolfenster

  • Erstellen Sie in einem Windows-Steuerelementbibliothek-Projekt ein Benutzersteuerelement.Übernehmen Sie den Standardnamen "WindowsControlLibrary1". Alternativ können Sie einen anderen Namen verwenden, müssen dann jedoch entsprechend den Namen des asmPath-Parameters im unten stehenden Code ändern.

    Sie können im Code auch auf ein vorhandenes Benutzersteuerelement verweisen.

HinweisHinweis

An die Klassendefinition der Benutzersteuerelementklasse muss ein System.Runtime.InteropServices.GuidAttribute angefügt werden.

  1. Erstellen Sie ein neues Add-In-Projekt.

    Weitere Informationen finden Sie unter Gewusst wie: Erstellen von Add-Ins.

  2. Ersetzen Sie die OnConnection-Methode des Add-Ins mit dem folgenden Code:

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

    Hinweis: Der vorangehende Code erfordert einen Verweis auf den System.Windows.Forms-Namespace.

  3. Ändern Sie die Werte der Variablen ctlProgID, asmPath und guidStr dem Benutzersteuerelement entsprechend.

  4. Erstellen Sie das Projekt, und führen Sie es aus.

  5. Klicken Sie im Menü Extras auf Add-In-Manager, um das Add-In zu aktivieren.

Das neue Toolfenster wird nun in der IDE angezeigt.Sie können es an eine beliebige Stelle verschieben oder mit anderen Toolfenstern andocken.

Siehe auch

Aufgaben

Gewusst wie: Ändern des Erscheinungsbilds eines Fensters

Gewusst wie: Erstellen von Add-Ins

Exemplarische Vorgehensweise: Erstellen eines Assistenten

Konzepte

Steuern der Einstellungen im Dialogfeld "Optionen" (Menü "Extras")

Diagramm "Automationsobjektmodell"

Weitere Ressourcen

Erstellen und Steuern von Umgebungsfenstern

Erstellen von Add-Ins und Assistenten

Referenz zur Automatisierung und Erweiterbarkeit