Sdílet prostřednictvím


Přidání okna nástroje

V tomto názorném postupu se dozvíte, jak vytvořit okno nástroje a integrovat ho do sady Visual Studio následujícími způsoby:

  • Přidejte ovládací prvek do okna nástroje.

  • Přidejte panel nástrojů do okna nástroje.

  • Přidejte na panel nástrojů příkaz.

  • Implementujte příkazy.

  • Nastavte výchozí umístění pro okno nástroje.

Požadavky

Sada Visual Studio SDK je součástí volitelné funkce v nastavení sady Visual Studio. Další informace najdete v tématu Instalace sady Visual Studio SDK.

Vytvoření okna nástroje

  1. Vytvořte projekt s názvem FirstToolWindow pomocí šablony VSIX a přidejte vlastní šablonu okna nástrojů s názvem FirstToolWindow.

    Poznámka

    Další informace o vytvoření rozšíření pomocí okna nástroje naleznete v tématu Vytvoření rozšíření pomocí okna nástroje.

Přidání ovládacího prvku do okna nástroje

  1. Odeberte výchozí ovládací prvek. Otevřete FirstToolWindowControl.xaml a odstraňte Klikněte na mě! tlačítko.

  2. Ve panelu nástrojůrozbalte sekci Všechny ovládací prvky WPF a přetáhněte ovládací prvek Media Element do formuláře FirstToolWindowControl. Vyberte ovládací prvek a v okně Vlastnosti pojmenujte tento prvek mediaElement1.

Přidání panelu nástrojů do okna nástroje

Přidáním panelu nástrojů následujícím způsobem zaručujete, že jeho přechody a barvy jsou konzistentní se zbytkem integrovaného vývojového prostředí (IDE).

  1. V Průzkumníku řešení otevřete FirstToolWindowPackage.vsct. Soubor .vsct definuje prvky grafického uživatelského rozhraní (GUI) v okně nástroje pomocí XML.

  2. V části <Symbols> najděte uzel <GuidSymbol>, jehož atribut name je guidFirstToolWindowPackageCmdSet. Do seznamu prvků <IDSymbol> v tomto uzlu přidejte následující dva <IDSymbol> prvky, které definují panel nástrojů a skupinu panelů nástrojů.

    <IDSymbol name="ToolbarID" value="0x1000" />
    <IDSymbol name="ToolbarGroupID" value="0x1001" />
    
  3. Přímo nad oddílem <Buttons> vytvořte oddíl <Menus> podobný tomuto:

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

    Existuje několik různých druhů jídelníčků. Tato nabídka je panel nástrojů v nástrojovém okně, definovaný svým atributem type. Nastavení guid a id tvoří plně kvalifikované ID panelu nástrojů. <Parent> nabídky je obvykle skupina, která obsahuje menu. Panel nástrojů je však definován jako vlastní nadřazený objekt. Proto se stejný identifikátor používá pro prvky <Menu> a <Parent>. Atribut priority je jen 0.

  4. Panely nástrojů se podobají nabídkám v mnoha ohledech. Například stejně jako nabídka může mít skupiny příkazů, panely nástrojů můžou mít také skupiny. (V nabídkách jsou skupiny příkazů oddělené vodorovnými čarami. Na panelech nástrojů nejsou skupiny příkazů oddělené vizuálními oddělovači.)

    Přidejte sekci <Groups>, která obsahuje prvek <Group>. Tím se definuje skupina, jejíž ID jste deklarovali v oddílu <Symbols>. Přidejte oddíl <Groups> hned za oddíl <Menus>.

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

    Nastavením nadřazeného identifikátoru GUID a ID na identifikátor GUID a ID panelu nástrojů přidáte skupinu na panel nástrojů.

Přidání příkazu na panel nástrojů

Na panel nástrojů přidejte příkaz, který se zobrazí jako tlačítko.

  1. V části <Symbols> deklarujte následující prvky IDSymbol hned za deklaracemi panelu nástrojů a skupiny panelů nástrojů.

    <IDSymbol name="cmdidWindowsMedia" value="0x0100" />
    <IDSymbol name="cmdidWindowsMediaOpen" value="0x132" />
    
  2. Do oddílu <Buttons> přidejte prvek Button. Tento prvek se zobrazí v panelu nástrojů ve okně nástroje s ikonou Hledat (lupa).

    <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. Otevřete FirstToolWindowCommand.cs a přidejte následující řádky do třídy hned za existující pole.

    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;
    

    Tímto způsobem zpřístupníte příkazy v kódu.

Přidání vlastnosti MediaPlayer do FirstToolWindowControl

Z obslužných rutin událostí pro ovládací prvky panelu nástrojů musí mít váš kód přístup k ovládacímu prvku Media Player, který je podřízeným prvkem třídy FirstToolWindowControl.

V Průzkumníku řešeníklikněte pravým tlačítkem myši na FirstToolWindowControl.xaml, klepněte na Zobrazit kóda přidejte ten následující kód do třídy FirstToolWindowControl.

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

Vytvoření instance okna nástroje a panelu nástrojů

Přidejte panel nástrojů a příkaz nabídky, který vyvolá dialogové okno Otevřít soubor a přehraje vybraný multimediální soubor.

  1. Otevřete FirstToolWindow.cs a přidejte následující direktivy using:

    using System.ComponentModel.Design;
    using System.Windows.Forms;
    using Microsoft.VisualStudio.Shell.Interop;
    
  2. Uvnitř třídy FirstToolWindow přidejte veřejnou referenci na ovládací prvek FirstToolWindowControl.

    public FirstToolWindowControl control;
    
  3. Na konci konstruktoru nastavte tuto řídicí proměnnou na nově vytvořený ovládací prvek.

    control = new FirstToolWindowControl();
    base.Content = control;
    
  4. Vytvořte instanci panelu nástrojů uvnitř konstruktoru.

    this.ToolBar = new CommandID(new Guid(FirstToolWindowCommand.guidFirstToolWindowPackageCmdSet),
        FirstToolWindowCommand.ToolbarID);
    this.ToolBarLocation = (int)VSTWT_LOCATION.VSTWT_TOP;
    
  5. V tomto okamžiku by měl konstruktor FirstToolWindow vypadat takto:

    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. Přidejte příkaz nabídky na panel nástrojů. Do třídy FirstToolWindowCommand.cs přidejte následující direktivu using:

    using System.Windows.Forms;
    
  7. Ve třídě FirstToolWindowCommand přidejte následující kód na konec metody ShowToolWindow(). Příkaz ButtonHandler se implementuje v další části.

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

Implementace příkazu nabídky v okně nástroje

  1. Ve třídě FirstToolWindowCommand přidejte metodu ButtonHandler, která otevře dialogové okno Open File. Když je vybraný soubor, přehraje multimediální soubor.

  2. Ve třídě FirstToolWindowCommand přidejte soukromý odkaz na okno FirstToolWindow, které se vytvoří v metodě FindToolWindow().

    private FirstToolWindow window;
    
  3. Změňte metodu ShowToolWindow() tak, aby nastavil okno, které jste definovali výše (aby obslužná rutina příkazu ButtonHandler měl přístup k ovládacímu prvku okna. Zde je kompletní ShowToolWindow() metoda.

    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. Přidejte metodu ButtonHandler. Vytvoří soubor OpenFileDialog, aby uživatel určil multimediální soubor, který se má přehrát, a přehraje vybraný soubor.

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

Nastavení výchozí pozice pro okno nástroje

Dále zadejte výchozí umístění v integrovaném vývojovém prostředí (IDE) pro okno nástroje. Informace o konfiguraci okna nástroje jsou v souboru FirstToolWindowPackage.cs.

  1. V FirstToolWindowPackage.csvyhledejte atribut ProvideToolWindowAttribute třídy FirstToolWindowPackage, který předává Typ FirstToolWindow konstruktoru. Chcete-li zadat výchozí pozici, musíte do konstruktoru přidat další parametry v následujícím příkladu.

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

    První pojmenovaný parametr je Style a jeho hodnota je Tabbed, což znamená, že okno bude tabulátorem v existujícím okně. Umístění ukotvení je určeno parametrem Window, v tomto případě identifikátorem GUID v Průzkumníku řešení .

    Poznámka

    Další informace o typech oken v integrovaném vývojovém prostředí (IDE) najdete v tématu vsWindowType.

Otestování okna nástroje

  1. Stisknutím klávesy F5 otevřete novou instanci experimentálního sestavení sady Visual Studio.

  2. V nabídce Zobrazit přejděte na Jiná okna a potom klikněte na První okno nástroje.

    Okno nástroje přehrávače médií by se mělo otevřít ve stejném umístění jako Průzkumník řešení. Pokud se stále zobrazuje ve stejné pozici jako předtím, resetujte rozložení okna (Okno / Obnovit rozložení okna).

  3. V okně nástroje klikněte na tlačítko (má ikonu Hledat). Vyberte podporovaný zvukový soubor nebo videosoubor, například C:\windows\media\chimes.wava stiskněte Otevřít.

    Měl bys slyšet zvuk zvonku.