Udostępnij za pośrednictwem


Dodawanie okna narzędzia

Z tego przewodnika dowiesz się, jak utworzyć okno narzędzi i zintegrować je z programem Visual Studio w następujący sposób:

  • Dodaj kontrolkę do okna narzędzi.

  • Dodaj pasek narzędzi do okna narzędzi.

  • Dodaj polecenie do paska narzędzi.

  • Zaimplementuj polecenia.

  • Ustaw pozycję domyślną dla okna narzędzi.

Warunki wstępne

Zestaw Visual Studio SDK jest dołączany jako opcjonalna funkcja w konfiguracji programu Visual Studio. Aby uzyskać więcej informacji, zobacz Instalowanie zestawu Visual Studio SDK.

Tworzenie okna narzędzi

  1. Utwórz projekt o nazwie FirstToolWindow przy użyciu szablonu VSIX i dodaj niestandardowy szablon elementu okna narzędzi o nazwie FirstToolWindow.

    Notatka

    Aby uzyskać więcej informacji na temat tworzenia rozszerzenia za pomocą okna narzędzi, zobacz Tworzenie rozszerzenia za pomocą okna narzędzi.

Dodawanie kontrolki do okna narzędzi

  1. Usuń kontrolkę domyślną. Otwórz FirstToolWindowControl.xaml i usuń przycisk Kliknij mnie!.

  2. W przybornikarozwiń sekcję Wszystkie kontrolki WPF i przeciągnij kontrolkę Media Element do formularza FirstToolWindowControl. Wybierz kontrolkę, a następnie w oknie właściwości nadaj temu elementowi nazwę mediaElement1.

Dodawanie paska narzędzi do okna narzędzi

Dodając pasek narzędzi w następujący sposób, gwarantujesz, że jego gradienty i kolory są spójne z resztą środowiska IDE.

  1. W eksploratorze rozwiązań otwórz FirstToolWindowPackage.vsct. Plik .vsct definiuje elementy graficznego interfejsu użytkownika (GUI) w oknie narzędzi przy użyciu kodu XML.

  2. W sekcji <Symbols> znajdź węzeł <GuidSymbol>, którego atrybutem name jest guidFirstToolWindowPackageCmdSet. Dodaj następujące dwa elementy <IDSymbol> do listy elementów <IDSymbol> w tym węźle, aby zdefiniować pasek narzędzi i grupę pasków narzędzi.

    <IDSymbol name="ToolbarID" value="0x1000" />
    <IDSymbol name="ToolbarGroupID" value="0x1001" />
    
  3. Tuż nad sekcją <Buttons> utwórz sekcję <Menus> podobną do następującej:

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

    Istnieje kilka różnych rodzajów menu. To menu jest paskiem narzędzi w oknie narzędzi zdefiniowanym przez atrybut type. Ustawienia guid i id składają się na w pełni kwalifikowany identyfikator paska narzędzi. Zazwyczaj <Parent> menu jest grupą zawierającą. Jednak pasek narzędzi definiuje się jako własny element nadrzędny. W związku z tym ten sam identyfikator jest używany dla elementów <Menu> i <Parent>. Atrybut priority to tylko "0".

  4. Paski narzędzi przypominają menu na wiele sposobów. Na przykład tak jak menu może zawierać grupy poleceń, paski narzędzi mogą również mieć grupy. (W menu grupy poleceń są oddzielone wierszami poziomymi. Na paskach narzędzi grupy nie są oddzielone podziałami wizualnymi).

    Dodaj sekcję <Groups> zawierającą element <Group>. Definiuje grupę, której identyfikator został zadeklarowany w sekcji <Symbols>. Dodaj sekcję <Groups> tuż po sekcji <Menus>.

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

    Ustawiając identyfikator GUID i identyfikator nadrzędny na identyfikator GUID i identyfikator paska narzędzi, dodajesz grupę do paska narzędzi.

Dodawanie polecenia do paska narzędzi

Dodaj polecenie do paska narzędzi, który jest wyświetlany jako przycisk.

  1. W sekcji <Symbols> zadeklaruj następujące elementy IDSymbol tuż po deklaracjach paska narzędzi i grupy narzędzi.

    <IDSymbol name="cmdidWindowsMedia" value="0x0100" />
    <IDSymbol name="cmdidWindowsMediaOpen" value="0x132" />
    
  2. Dodaj element Przycisk wewnątrz sekcji <Buttons>. Ten element pojawi się na pasku narzędzi w oknie narzędzi z ikoną Search (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. Otwórz FirstToolWindowCommand.cs i dodaj następujące wiersze w klasie tuż po istniejących polach.

    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;
    

    Dzięki temu polecenia są dostępne w kodzie.

Dodaj właściwość MediaPlayer do elementu FirstToolWindowControl

Z programów obsługi zdarzeń dla kontrolek paska narzędzi kod musi mieć dostęp do kontrolki Media Player, która jest elementem podrzędnym klasy FirstToolWindowControl.

W eksploratorze rozwiązań kliknij prawym przyciskiem myszy FirstToolWindowControl.xaml, kliknij Wyświetl kodi dodaj następujący kod do klasy FirstToolWindowControl.

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

Inicjalizuj okno narzędzi oraz pasek narzędziowy

Dodaj pasek narzędzi i polecenie menu, które wywołuje okno dialogowe Otwórz plik i odtwarza wybrany plik multimedialny.

  1. Otwórz FirstToolWindow.cs i dodaj następujące dyrektywy using:

    using System.ComponentModel.Design;
    using System.Windows.Forms;
    using Microsoft.VisualStudio.Shell.Interop;
    
  2. Wewnątrz klasy FirstToolWindow dodaj publiczne odwołanie do kontrolki FirstToolWindowControl.

    public FirstToolWindowControl control;
    
  3. Na końcu konstruktora ustaw tę zmienną kontrolną na nowo utworzoną kontrolkę.

    control = new FirstToolWindowControl();
    base.Content = control;
    
  4. Wewnątrz konstruktora utwórz wystąpienie paska narzędzi.

    this.ToolBar = new CommandID(new Guid(FirstToolWindowCommand.guidFirstToolWindowPackageCmdSet),
        FirstToolWindowCommand.ToolbarID);
    this.ToolBarLocation = (int)VSTWT_LOCATION.VSTWT_TOP;
    
  5. W tym momencie konstruktor FirstToolWindow powinien wyglądać następująco:

    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. Dodaj polecenie menu do paska narzędzi. W klasie FirstToolWindowCommand.cs dodaj następującą dyrektywę using:

    using System.Windows.Forms;
    
  7. W klasie FirstToolWindowCommand dodaj następujący kod na końcu metody ShowToolWindow(). Polecenie ButtonHandler zostanie zaimplementowane w następnej sekcji.

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

Aby zaimplementować polecenie menu w oknie narzędzi

  1. W klasie FirstToolWindowCommand dodaj metodę ButtonHandler, która wywołuje okno dialogowe Otwórz plik. Po wybraniu pliku odtwarzany jest plik multimedialny.

  2. W klasie FirstToolWindowCommand dodaj prywatne odwołanie do okna FirstToolWindow, które zostanie utworzone w metodzie FindToolWindow().

    private FirstToolWindow window;
    
  3. Zmień metodę ShowToolWindow(), aby ustawić zdefiniowane powyżej okno (tak aby program obsługi przycisków mógł uzyskać dostęp do kontrolki okna. Oto kompletna metoda ShowToolWindow().

    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. Dodaj metodę ButtonHandler. Tworzy on plik OpenFileDialog dla użytkownika w celu określenia pliku multimedialnego do odtwarzania, a następnie odtwarza wybrany plik.

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

Ustawianie domyślnego położenia okna narzędzi

Następnie określ domyślną lokalizację w środowisku IDE dla okna narzędzia. Informacje o konfiguracji okna narzędzi są w pliku FirstToolWindowPackage.cs.

  1. W FirstToolWindowPackage.csznajdź atrybut ProvideToolWindowAttribute w klasie FirstToolWindowPackage, która przekazuje typ FirstToolWindow do konstruktora. Aby określić położenie domyślne, należy dodać więcej parametrów do konstruktora w poniższym przykładzie.

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

    Pierwszy nazwany parametr jest Style, a jego wartość jest Tabbed, co oznacza, że okno będzie kartą w istniejącym oknie. Położenie dokowania jest określane przez parametr Window, w tym przypadku identyfikatorem GUID Eksploratora rozwiązań .

    Notatka

    Aby uzyskać więcej informacji na temat typów okien w środowisku IDE, zobacz vsWindowType.

Testowanie okna narzędzia

  1. Naciśnij F5, aby otworzyć nowe wystąpienie eksperymentalnej kompilacji programu Visual Studio.

  2. W menu Widok przejdź do Inne Okna, a następnie kliknij Pierwsze Okno Narzędzi.

    Okno narzędzia odtwarzacza multimediów powinno być otwarte w tej samej pozycji co eksplorator rozwiązań . Jeśli nadal występuje w tej samej pozycji co poprzednio, zresetuj układ okna (okno / Resetuj układ okna).

  3. Kliknij przycisk (ma ikonę Wyszukaj) w oknie narzędzia. Wybierz obsługiwany plik dźwiękowy lub wideo, na przykład C:\windows\media\chimes.wav, a następnie naciśnij przycisk Otwórz.

    Powinieneś usłyszeć dźwięk dzwonka.