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.

  • Hinzufügen einer Symbolleiste zu einem Toolfenster.

  • 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 "FirstToolWindow" hinzu.

    Hinweis

    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 Schaltfläche "Click Me! ".

  2. Erweitern Sie in der Toolbox den Abschnitt "Alle WPF-Steuerelemente", und ziehen Sie das Medienelement-Steuerelement auf das FirstToolWindowControl-Formular. Wählen Sie das Steuerelement aus, und nennen Sie im Eigenschaftenfenster dieses Element "mediaElement1".

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 in Projektmappen-Explorer FirstToolWindowPackage.vsct. Die VSCT-Datei definiert die GUI-Elemente (Grafische Benutzeroberfläche) in Ihrem Toolfenster mithilfe von XML.

  2. Suchen Sie im <Symbols> Abschnitt den <GuidSymbol> Knoten, dessen name Attribut lautet guidFirstToolWindowPackageCmdSet. 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 <Buttons> Abschnitts 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, das durch sein type Attribut definiert wird. Die guid einstellungen id bilden die vollqualifizierte ID der Symbolleiste. In der Regel ist das <Parent> Menü die enthaltende Gruppe. Eine Symbolleiste wird jedoch als eigenes übergeordnetes Element definiert. Daher wird derselbe Bezeichner für die und <Parent> die <Menu> Elemente verwendet. Das priority Attribut ist nur '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 <Symbols> Abschnitt deklariert haben. Fügen Sie den <Groups> Abschnitt direkt hinter dem <Menus> Abschnitt 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 zur Symbolleiste hinzu.

Hinzufügen eines Befehls zur Symbolleiste

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

  1. Deklarieren Sie im <Symbols> Abschnitt 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 innerhalb des <Buttons> Abschnitts 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 Medienwiedergabe-Steuerelement zugreifen können, das ein untergeordnetes Element der FirstToolWindowControl-Klasse ist.

Klicken Sie in Projektmappen-Explorer mit 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 Steuerelementvariable 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 Standardspeicherort in der IDE für das Toolfenster an. Konfigurationsinformationen für das Toolfenster befinden sich in der datei FirstToolWindowPackage.cs .

  1. Suchen Sie in FirstToolWindowPackage.cs das ProvideToolWindowAttribute Attribut für die FirstToolWindowPackage Klasse, das 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 lautet Tabbed, was bedeutet, dass das Fenster eine Registerkarte in einem vorhandenen Fenster ist. Die Andockposition wird durch den Window Parameter angegeben, n. In diesem Fall wird die GUID der Projektmappen-Explorer angegeben.

    Hinweis

    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 "Andere Fenster" , und klicken Sie dann auf "Erstes Toolfenster".

    Das Media Player-Toolfenster sollte an derselben Position wie Projektmappen-Explorer geöffnet werden. Wenn es weiterhin an derselben 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 Suchsymbol ). 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 Chime-Sound hören.