Gewusst wie: Erstellen und Steuern von Toolfenstern
Add-Ins für Visual Studio sind in Visual Studio 2013 veraltet. Sie müssen für Ihre Add-Ins ein Upgrade auf VSPackage-Erweiterungen durchführen. Weitere Informationen über das Durchführen eines Upgrades finden Sie unter FAQ: Konvertieren von Add-Ins in VSPackage-Erweiterungen.
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.
Zusätzlich zu den unten angegebenen Beispielen sind weitere Toolfensterbeispiele für die einzelnen Sprachen sowie andere Codebeispiele auf der Website für Automatisierungs-Beispiele für Visual Studio zu finden.
Hinweis
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.
Hinweis
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 Einstellungenimportieren und exportieren aus, um die Einstellungen zu ändern.Weitere Informationen finden Sie unter Anpassen der Entwicklungseinstellungen in Visual Studio.
Erstellen eines benutzerdefinierten Toolfensters
Im folgenden Beispiel wird das Erstellen eines Toolfensters in Visual Basic und Visual C# veranschaulicht.
Hinweis
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.
Hinweis
An die Klassendefinition der Benutzersteuerelementklasse muss ein GuidAttribute angefügt werden.
Erstellen Sie ein neues Add-In-Projekt.
Weitere Informationen finden Sie unter Gewusst wie: Erstellen von Add-Ins.
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 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); } }
Hinweis: Der vorangehende Code erfordert einen Verweis auf den System.Windows.Forms-Namespace.
Ändern Sie die Werte der Variablen ctlProgID, asmPath und guidStr dem Benutzersteuerelement entsprechend.
Erstellen Sie das Projekt, und führen Sie es aus.
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