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.

Wymagania 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 FirstToolWin przy użyciu szablonu VSIX i dodaj niestandardowy szablon elementu okna narzędzia o nazwie FirstToolWindow.

    Uwaga

    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 plik FirstToolWindowControl.xaml i usuń przycisk Kliknij mnie!

  2. W przyborniku rozwiń 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 Eksplorator rozwiązań otwórz plik FirstToolWindowPackage.vsct. Plik .vsct definiuje graficzne elementy interfejsu użytkownika (GUI) w oknie narzędzi przy użyciu kodu XML.

  2. <Symbols> W sekcji znajdź <GuidSymbol> węzeł, którego name atrybutem jest guidFirstToolWindowPackageCmdSet. Dodaj następujące dwa <IDSymbol> elementy do listy <IDSymbol> elementów 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ę podobną do następującej <Menus> :

    <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 jego type atrybut. Ustawienia guid i id składają się na w pełni kwalifikowany identyfikator paska narzędzi. <Parent> Zazwyczaj menu jest grupą zawierającą. Jednak pasek narzędzi jest definiowany jako własny element nadrzędny. W związku z tym ten sam identyfikator jest używany dla <Menu> elementów 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ę zawierającą <Groups><Group> element. Definiuje grupę, której identyfikator zadeklarowany w <Symbols> sekcji. Dodaj sekcję <Groups> tuż po <Menus> sekcji.

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

    Ustawiając nadrzędny identyfikator GUID i identyfikator na identyfikator GUID i identyfikator paska narzędzi, należy dodać 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 zadeklaruj <Symbols> następujące elementy IDSymbol tuż po deklaracjach grup paska narzędzi i paska narzędzi.

    <IDSymbol name="cmdidWindowsMedia" value="0x0100" />
    <IDSymbol name="cmdidWindowsMediaOpen" value="0x132" />
    
  2. Dodaj element Przycisk w <Buttons> sekcji. Ten element pojawi się na pasku narzędzi w oknie narzędzi z ikoną Wyszukaj (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 plik 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.

Dodawanie właściwości MediaPlayer do elementu FirstToolWindowControl

W programach obsługi zdarzeń dla kontrolek paska narzędzi kod musi mieć dostęp do kontrolki Odtwarzacz multimedialny, która jest elementem podrzędnym klasy FirstToolWindowControl.

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

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

Tworzenie wystąpienia okna narzędzi i paska narzędzi

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

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

    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. Utwórz wystąpienie paska narzędzi wewnątrz konstruktora.

    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 Otwieranie pliku . 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 znajduje się w pliku FirstToolWindowPackage.cs .

  1. W pliku FirstToolWindowPackage.cs znajdź ProvideToolWindowAttribute atrybut w FirstToolWindowPackage klasie , który 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 to Style i jego wartość to Tabbed, co oznacza, że okno będzie kartą w istniejącym oknie. Położenie dokowania jest określane przez Window parametr , n tym przypadku identyfikator GUID Eksplorator rozwiązań.

    Uwaga

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

Testowanie okna narzędzia

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

  2. W menu Widok wskaż pozycję Inne okna, a następnie kliknij pozycję Pierwsze okno narzędzia.

    Okno narzędzia odtwarzacza multimediów powinno być otwarte w tej samej pozycji co Eksplorator rozwiązań. Jeśli nadal występuje on 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 szympansu.