Freigeben über


Hinzufügen eines Toolfensters

In dieser exemplarischen Vorgehensweise erfahren Sie, wie Sie ein Toolfenster erstellen und auf folgende Weise in Visual Studio integrieren:

  • Fügen Sie dem Toolfenster ein Steuerelement hinzu.

  • Sie können einem Toolfenster eine Symbolleiste hinzufügen.

  • Fügen Sie der Symbolleiste einen Befehl hinzu.

  • Implementieren Sie die Befehle.

  • Legen Sie die Standardposition für das Toolfenster fest.

Voraussetzungen

Das Visual Studio SDK ist als optionales Feature im Visual Studio-Setup enthalten. Weitere Informationen finden Sie unter Installieren des Visual Studio SDK-.

Erstellen eines Toolfensters

  1. Erstellen Sie ein Projekt mit dem Namen FirstToolWindow mithilfe der VSIX-Vorlage, und fügen Sie eine benutzerdefinierte Toolfensterelementvorlage namens FirstToolWindowhinzu.

    Anmerkung

    Weitere Informationen zum Erstellen einer Erweiterung mit einem Toolfenster finden Sie unter Erstellen einer Erweiterung mit einem Toolfenster.

Hinzufügen eines Steuerelements zum Toolfenster

  1. Entfernen Sie das Standardsteuerelement. Öffnen Sie FirstToolWindowControl.xaml-, und löschen Sie die Click Me! Schaltfläche.

  2. Erweitern Sie in der Toolboxden Abschnitt Alle WPF-Steuerelemente und ziehen Sie das Media Element-Steuerelement auf das Formular FirstToolWindowControl. Wählen Sie das Steuerelement aus, und nennen Sie dieses Element im Fenster EigenschaftenmediaElement1.

Hinzufügen einer Symbolleiste zum Toolfenster

Indem Sie eine Symbolleiste auf folgende Weise hinzufügen, stellen Sie sicher, dass ihre Farbverläufe und Farben mit dem Rest der IDE konsistent sind.

  1. Öffnen Sie im Projektmappen-Explorer die Datei FirstToolWindowPackage.vsct. Die VSCT--Datei definiert die GUI-Elemente (Grafische Benutzeroberfläche) in Ihrem Toolfenster mithilfe von XML.

  2. Suchen Sie im Abschnitt <Symbols> den Knoten <GuidSymbol>, dessen name-Attribut guidFirstToolWindowPackageCmdSetist. Fügen Sie die folgenden beiden <IDSymbol> Elemente zur Liste der <IDSymbol> Elemente in diesem Knoten hinzu, um eine Symbolleiste und eine Symbolleistengruppe zu definieren.

    <IDSymbol name="ToolbarID" value="0x1000" />
    <IDSymbol name="ToolbarGroupID" value="0x1001" />
    
  3. Erstellen Sie direkt oberhalb des abschnitts <Buttons> einen <Menus> Abschnitt, der wie folgt aussieht:

    <Menus>
        <Menu guid="guidFirstToolWindowPackageCmdSet" id="ToolbarID" priority="0x0000" type="ToolWindowToolbar">
            <Parent guid="guidFirstToolWindowPackageCmdSet" id="ToolbarID" />
            <Strings>
                <ButtonText>Tool Window Toolbar</ButtonText>
                <CommandName>Tool Window Toolbar</CommandName>
            </Strings>
        </Menu>
    </Menus>
    

    Es gibt verschiedene Arten von Menüs. Dieses Menü ist eine Symbolleiste in einem Toolfenster, definiert durch das type-Attribut. Die einstellungen guid und id bilden die vollqualifizierte ID der Symbolleiste. In der Regel ist der <Parent> eines Menüs die enthaltende Gruppe. Eine Symbolleiste wird jedoch als eigenes übergeordnetes Element definiert. Daher wird derselbe Bezeichner für die elemente <Menu> und <Parent> verwendet. Das Attribut priority ist einfach „0“.

  4. Symbolleisten ähneln Menüs auf vielfältige Weise. Beispielsweise kann ein Menü Gruppen von Befehlen haben, Symbolleisten können auch Gruppen haben. (In Menüs werden die Befehlsgruppen durch horizontale Linien getrennt. Auf Symbolleisten werden die Gruppen nicht durch visuelle Trennzeichen getrennt.)

    Fügen Sie einen <Groups> Abschnitt hinzu, der ein <Group>-Element enthält. Dadurch wird die Gruppe definiert, deren ID Sie im Abschnitt <Symbols> deklariert haben. Fügen Sie den abschnitt <Groups> direkt hinter dem Abschnitt <Menus> hinzu.

    <Groups>
        <Group guid="guidFirstToolWindowPackageCmdSet" id="ToolbarGroupID" priority="0x0000">
            <Parent guid="guidFirstToolWindowPackageCmdSet" id="ToolbarID" />
        </Group>
    </Groups>
    

    Indem Sie die übergeordnete GUID und ID auf die GUID und die ID der Symbolleiste festlegen, fügen Sie die Gruppe der Symbolleiste hinzu.

Befehl zur Symbolleiste hinzufügen

Fügen Sie der Symbolleiste einen Befehl hinzu, der als Schaltfläche angezeigt wird.

  1. Deklarieren Sie im Abschnitt <Symbols> die folgenden IDSymbol-Elemente direkt hinter den Deklarationen der Symbolleisten- und Symbolleistengruppen.

    <IDSymbol name="cmdidWindowsMedia" value="0x0100" />
    <IDSymbol name="cmdidWindowsMediaOpen" value="0x132" />
    
  2. Fügen Sie ein Button-Element im abschnitt <Buttons> hinzu. Dieses Element wird auf der Symbolleiste im Toolfenster mit einem Suchsymbol (Lupe) angezeigt.

    <Button guid="guidFirstToolWindowPackageCmdSet" id="cmdidWindowsMediaOpen" priority="0x0101" type="Button">
        <Parent guid="guidFirstToolWindowPackageCmdSet" id="ToolbarGroupID"/>
        <Icon guid="guidImages" id="bmpPicSearch" />
        <Strings>
            <CommandName>cmdidWindowsMediaOpen</CommandName>
            <ButtonText>Load File</ButtonText>
        </Strings>
    </Button>
    
  3. Öffnen Sie FirstToolWindowCommand.cs, und fügen Sie die folgenden Zeilen in der Klasse direkt hinter den vorhandenen Feldern hinzu.

    public const string guidFirstToolWindowPackageCmdSet = "00000000-0000-0000-0000-0000";  // get the GUID from the .vsct file
    public const uint cmdidWindowsMedia = 0x100;
    public const int cmdidWindowsMediaOpen = 0x132;
    public const int ToolbarID = 0x1000;
    

    Dadurch werden Ihre Befehle im Code verfügbar gemacht.

Hinzufügen einer MediaPlayer-Eigenschaft zu FirstToolWindowControl

Von den Ereignishandlern für die Symbolleistensteuerelemente muss Ihr Code auf das Media Player-Steuerelement zugreifen können, das ein untergeordnetes Element der FirstToolWindowControl-Klasse ist.

Klicken Sie im Projektmappen-Explorermit der rechten Maustaste auf FirstToolWindowControl.xaml-, klicken Sie auf Code anzeigen, und fügen Sie der FirstToolWindowControl-Klasse den folgenden Code hinzu.

public System.Windows.Controls.MediaElement MediaPlayer
{
    get { return mediaElement1; }
}

Instanziieren des Toolfensters und der Symbolleiste

Fügen Sie eine Symbolleiste und einen Menübefehl hinzu, der das Dialogfeld "Datei öffnen" aufruft und die ausgewählte Mediendatei wiedergibt.

  1. Öffnen Sie FirstToolWindow.cs, und fügen Sie die folgenden using Direktiven hinzu:

    using System.ComponentModel.Design;
    using System.Windows.Forms;
    using Microsoft.VisualStudio.Shell.Interop;
    
  2. Fügen Sie innerhalb der FirstToolWindow-Klasse einen öffentlichen Verweis auf das FirstToolWindowControl-Steuerelement hinzu.

    public FirstToolWindowControl control;
    
  3. Legen Sie am Ende des Konstruktors diese Steuervariable auf das neu erstellte Steuerelement fest.

    control = new FirstToolWindowControl();
    base.Content = control;
    
  4. Instanziieren Sie die Symbolleiste innerhalb des Konstruktors.

    this.ToolBar = new CommandID(new Guid(FirstToolWindowCommand.guidFirstToolWindowPackageCmdSet),
        FirstToolWindowCommand.ToolbarID);
    this.ToolBarLocation = (int)VSTWT_LOCATION.VSTWT_TOP;
    
  5. An diesem Punkt sollte der FirstToolWindow-Konstruktor wie folgt aussehen:

    public FirstToolWindow() : base(null)
    {
        this.Caption = "FirstToolWindow";
        this.BitmapResourceID = 301;
        this.BitmapIndex = 1;
        control = new FirstToolWindowControl();
        base.Content = control;
        this.ToolBar = new CommandID(new Guid(FirstToolWindowCommand.guidFirstToolWindowPackageCmdSet),
            FirstToolWindowCommand.ToolbarID);
            this.ToolBarLocation = (int)VSTWT_LOCATION.VSTWT_TOP;
    }
    
  6. Fügen Sie der Symbolleiste den Menübefehl hinzu. Fügen Sie in der klasse FirstToolWindowCommand.cs die folgende using-Direktive hinzu:

    using System.Windows.Forms;
    
  7. Fügen Sie in der FirstToolWindowCommand-Klasse am Ende der ShowToolWindow()-Methode den folgenden Code hinzu. Der ButtonHandler-Befehl wird im nächsten Abschnitt implementiert.

    // Create the handles for the toolbar command.
    var mcs = this.ServiceProvider.GetService(typeof(IMenuCommandService)) as OleMenuCommandService;
    var toolbarbtnCmdID = new CommandID(new Guid(FirstToolWindowCommand.guidFirstToolWindowPackageCmdSet),
        FirstToolWindowCommand.cmdidWindowsMediaOpen);
    var menuItem = new MenuCommand(new EventHandler(
        ButtonHandler), toolbarbtnCmdID);
    mcs.AddCommand(menuItem);
    

So implementieren Sie einen Menübefehl im Toolfenster

  1. Fügen Sie in der FirstToolWindowCommand-Klasse eine ButtonHandler-Methode hinzu, die das Dialogfeld "Datei öffnen" aufruft. Wenn eine Datei ausgewählt wurde, wird die Mediendatei wiedergegeben.

  2. Fügen Sie in der FirstToolWindowCommand-Klasse einen privaten Verweis auf das FirstToolWindow-Fenster hinzu, das in der FindToolWindow()-Methode erstellt wird.

    private FirstToolWindow window;
    
  3. Ändern Sie die ShowToolWindow()-Methode, um das oben definierte Fenster festzulegen (sodass der ButtonHandler-Befehlshandler auf das Fenstersteuerelement zugreifen kann. Hier ist die vollständige ShowToolWindow()-Methode.

    private void ShowToolWindow(object sender, EventArgs e)
    {
        window = (FirstToolWindow) this.package.FindToolWindow(typeof(FirstToolWindow), 0, true);
        if ((null == window) || (null == window.Frame))
        {
            throw new NotSupportedException("Cannot create tool window");
        }
    
        IVsWindowFrame windowFrame = (IVsWindowFrame)window.Frame;
        Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(windowFrame.Show());
    
        var mcs = this.ServiceProvider.GetService(typeof(IMenuCommandService)) as OleMenuCommandService;
        var toolbarbtnCmdID = new CommandID(new Guid(FirstToolWindowCommandguidFirstToolWindowPackageCmdSet),
            FirstToolWindowCommand.cmdidWindowsMediaOpen);
        var menuItem = new MenuCommand(new EventHandler(
            ButtonHandler), toolbarbtnCmdID);
        mcs.AddCommand(menuItem);
    }
    
  4. Fügen Sie die ButtonHandler-Methode hinzu. Es erstellt einen OpenFileDialog für den Benutzer, um die mediendatei anzugeben, die wiedergegeben werden soll, und gibt dann die ausgewählte Datei wieder.

    private void ButtonHandler(object sender, EventArgs arguments)
    {
        OpenFileDialog openFileDialog = new OpenFileDialog();
        DialogResult result = openFileDialog.ShowDialog();
        if (result == DialogResult.OK)
        {
            window.control.MediaPlayer.Source = new System.Uri(openFileDialog.FileName);
        }
    }
    

Festlegen der Standardposition für das Toolfenster

Geben Sie als Nächstes einen Standardstandort in der IDE für das Toolfenster an. Konfigurationsinformationen für das Toolfenster befinden sich in der FirstToolWindowPackage.cs Datei.

  1. Suchen Sie in FirstToolWindowPackage.csdas ProvideToolWindowAttribute-Attribut für die FirstToolWindowPackage-Klasse, die den FirstToolWindow-Typ an den Konstruktor übergibt. Um eine Standardposition anzugeben, müssen Sie dem Konstruktor im folgenden Beispiel weitere Parameter hinzufügen.

    [ProvideToolWindow(typeof(FirstToolWindow),
        Style = Microsoft.VisualStudio.Shell.VsDockStyle.Tabbed,
        Window = "3ae79031-e1bc-11d0-8f78-00a0c9110057")]
    

    Der erste benannte Parameter ist Style und sein Wert ist Tabbed, was bedeutet, dass das Fenster eine Registerkarte in einem vorhandenen Fenster ist. Die Andockposition wird durch den Parameter Window angegeben. In diesem Fall ist es die GUID des Projektmappen-Explorers.

    Anmerkung

    Weitere Informationen zu den Typen von Fenstern in der IDE finden Sie unter vsWindowType.

Testen des Toolfensters

  1. Drücken Sie F5-, um eine neue Instanz des experimentellen Visual Studio-Builds zu öffnen.

  2. Zeigen Sie im Menü Ansicht auf Weitere Fenster, und klicken Sie dann auf Erstes Toolfenster.

    Das Media Player-Toolfenster sollte an derselben Position wie der Projektmappen-Explorergeöffnet werden. Wenn es immer noch an der gleichen Position wie zuvor angezeigt wird, setzen Sie das Fensterlayout zurück (Fenster/ Fensterlayout zurücksetzen).

  3. Klicken Sie im Toolfenster auf die Schaltfläche (mit dem Symbol Suchen). Wählen Sie eine unterstützte Sound- oder Videodatei aus, z. B. C:\windows\media\chimes.wav, und drücken Sie dann Öffnen.

    Sie sollten den Glockenton hören.