Een taakvenster toevoegen
In deze procedure leert u hoe u een hulpprogrammavenster maakt en dit op de volgende manieren integreert in Visual Studio:
Voeg een bedieningselement toe aan het taakvenster.
Voeg een werkbalk toe aan een taakvenster.
Voeg een opdracht toe aan de werkbalk.
Implementeer de opdrachten.
Stel de standaardpositie voor het gereedschapsvenster in.
Voorwaarden
De Visual Studio SDK is opgenomen als een optionele functie in de installatie van Visual Studio. Zie De Visual Studio SDK installerenvoor meer informatie.
Een taakvenster maken
Maak een project met de naam FirstToolWindow met behulp van de VSIX-sjabloon en voeg een sjabloon voor aangepaste venstervensters toe met de naam FirstToolWindow.
Notitie
Zie Een extensie maken met een hulpmiddelvenstervoor meer informatie over het maken van een extensie met een hulpmiddelvenster.
Een controle aan het taakvenster toevoegen
Verwijder het standaard bedieningselement. Open FirstToolWindowControl.xaml en verwijder de Klik op mij! knop.
Vouw in de Toolboxhet gedeelte Alle WPF-besturingselementen uit en sleep het besturingselement Media-element naar het FirstToolWindowControl formulier. Selecteer het besturingselement en geef in het venster Eigenschappen dit element de naam mediaElement1.
Een werkbalk toevoegen aan het taakvenster
Door een werkbalk op de volgende manier toe te voegen, garandeert u dat de kleurovergangen en kleuren consistent zijn met de rest van de IDE.
In Solution Explorer, open FirstToolWindowPackage.vsct. Het bestand .vsct definieert de grafische elementen van de gebruikersinterface (GUI) in het taakvenster met behulp van XML.
Zoek in de sectie
<Symbols>
het knooppunt<GuidSymbol>
waarvan het kenmerkname
isguidFirstToolWindowPackageCmdSet
. Voeg de volgende twee<IDSymbol>
elementen toe aan de lijst met<IDSymbol>
elementen in dit knooppunt om een werkbalk en een werkbalkgroep te definiëren.<IDSymbol name="ToolbarID" value="0x1000" /> <IDSymbol name="ToolbarGroupID" value="0x1001" />
Maak net boven de sectie
<Buttons>
een<Menus>
sectie die er ongeveer als volgt uit ziet:<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>
Er zijn verschillende soorten menu's. Dit menu is een werkbalk in een taakvenster, gedefinieerd door het bijbehorende
type
kenmerk. De instellingen voorguid
enid
vormen de volledig gekwalificeerde id van de werkbalk. Normaal gesproken is het<Parent>
van een menu de omvattende groep. Een werkbalk wordt echter gedefinieerd als zijn eigen ouder. Daarom wordt dezelfde id gebruikt voor de<Menu>
- en<Parent>
-elementen. Het kenmerkpriority
is slechts '0'.Werkbalken lijken op menu's op veel manieren. Net als een menu bijvoorbeeld groepen opdrachten kan hebben, kunnen werkbalken ook groepen bevatten. (In menu's worden de opdrachtgroepen gescheiden door horizontale lijnen. Op werkbalken worden de groepen niet gescheiden door visuele scheidingslijnen.)
Voeg een
<Groups>
sectie toe die een<Group>
-element bevat. Hiermee definieert u de groep waarvan u de id hebt gedeclareerd in de sectie<Symbols>
. Voeg de<Groups>
sectie toe vlak na de sectie<Menus>
.<Groups> <Group guid="guidFirstToolWindowPackageCmdSet" id="ToolbarGroupID" priority="0x0000"> <Parent guid="guidFirstToolWindowPackageCmdSet" id="ToolbarID" /> </Group> </Groups>
Door de ouder-GUID en ID in te stellen op de GUID en ID van de werkbalk, voegt u de groep toe aan de werkbalk.
Een opdracht toevoegen aan de werkbalk
Voeg een opdracht toe aan de werkbalk, die wordt weergegeven als een knop.
Declareer in sectie
<Symbols>
de volgende IDSymbol-elementen direct na de declaraties van de werkbalk en werkbalkgroep.<IDSymbol name="cmdidWindowsMedia" value="0x0100" /> <IDSymbol name="cmdidWindowsMediaOpen" value="0x132" />
Voeg een knopelement toe in de sectie
<Buttons>
. Dit element wordt weergegeven op de werkbalk in het taakvenster, met een pictogram Zoeken (vergrootglas).<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>
Open FirstToolWindowCommand.cs en voeg de volgende regels toe aan de klasse net na de bestaande velden.
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;
Hierdoor zijn uw opdrachten beschikbaar in code.
Een MediaPlayer-eigenschap toevoegen aan FirstToolWindowControl
Vanuit de event handlers voor de werkbalkregelaars moet uw code de Media Player-regelaar kunnen benaderen, die een onderdeel is van de klasse FirstToolWindowControl.
Klik in Solution Explorer-met de rechtermuisknop op FirstToolWindowControl.xaml-, klik op Code weergevenen voeg de volgende code toe aan de klasse FirstToolWindowControl.
public System.Windows.Controls.MediaElement MediaPlayer
{
get { return mediaElement1; }
}
Het taakvenster en de werkbalk instantiëren
Voeg een werkbalk en een menuopdracht toe waarmee het dialoogvenster Bestand openen wordt aangeroepen en het geselecteerde mediabestand wordt afgespeeld.
Open FirstToolWindow.cs en voeg de volgende
using
-instructies toe:using System.ComponentModel.Design; using System.Windows.Forms; using Microsoft.VisualStudio.Shell.Interop;
Voeg in de klasse FirstToolWindow een openbare verwijzing toe aan het besturingselement FirstToolWindowControl.
public FirstToolWindowControl control;
Stel aan het einde van de constructor deze variabele in op het nieuw aangemaakte besturingselement.
control = new FirstToolWindowControl(); base.Content = control;
Instantieer de werkbalk in de constructor.
this.ToolBar = new CommandID(new Guid(FirstToolWindowCommand.guidFirstToolWindowPackageCmdSet), FirstToolWindowCommand.ToolbarID); this.ToolBarLocation = (int)VSTWT_LOCATION.VSTWT_TOP;
Op dit moment moet de FirstToolWindow-constructor er als volgt uitzien:
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; }
Voeg de menuopdracht toe aan de werkbalk. Voeg in de klasse FirstToolWindowCommand.cs de volgende using-instructie toe:
using System.Windows.Forms;
Voeg in de klasse FirstToolWindowCommand de volgende code toe aan het einde van de methode ShowToolWindow(). De opdracht ButtonHandler wordt geïmplementeerd in de volgende sectie.
// 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);
Een menuopdracht implementeren in het taakvenster
Voeg in de klasse FirstToolWindowCommand een ButtonHandler-methode toe die het dialoogvenster Bestand openen aanroept. Wanneer een bestand is geselecteerd, wordt het mediabestand afgespeeld.
Voeg in de klasse FirstToolWindowCommand een persoonlijke verwijzing toe aan het Venster FirstToolWindow dat wordt gemaakt in de methode FindToolWindow().
private FirstToolWindow window;
Wijzig de methode ShowToolWindow() om het hierboven gedefinieerde venster in te stellen (zodat de ButtonHandler-opdrachthandler toegang heeft tot het vensterbeheer. Hier volgt de volledige Methode 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); }
Voeg de Methode ButtonHandler toe. Er wordt een OpenFileDialog voor de gebruiker gemaakt om het mediabestand op te geven dat moet worden afgespeeld en vervolgens het geselecteerde bestand af te spelen.
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); } }
De standaardpositie voor het taakvenster instellen
Geef vervolgens een standaardlocatie op in de IDE voor het hulpprogrammavenster. Configuratie-informatie voor het hulpprogrammavenster bevindt zich in het FirstToolWindowPackage.cs-bestand.
Zoek in FirstToolWindowPackage.cshet kenmerk ProvideToolWindowAttribute op de klasse
FirstToolWindowPackage
, waarmee het type FirstToolWindow wordt doorgegeven aan de constructor. Als u een standaardpositie wilt opgeven, moet u meer parameters toevoegen aan de constructor in het volgende voorbeeld.[ProvideToolWindow(typeof(FirstToolWindow), Style = Microsoft.VisualStudio.Shell.VsDockStyle.Tabbed, Window = "3ae79031-e1bc-11d0-8f78-00a0c9110057")]
De eerste benoemde parameter is
Style
en de waarde ervan isTabbed
, wat betekent dat het venster een tabblad in een bestaand venster is. De dockingpositie wordt opgegeven door de parameterWindow
, n dit geval, de GUID van de Solution Explorer.Notitie
Zie vsWindowTypevoor meer informatie over de typen vensters in de IDE.
Het taakvenster testen
Druk op F5- om een nieuw exemplaar van de experimentele build van Visual Studio te openen.
Wijs in het menu Weergave naar Overige vensters en klik vervolgens op Eerste hulpmiddelvenster.
Het hulpmiddelvenster van de mediaspeler moet op dezelfde positie worden geopend als Solution Explorer. Als deze nog steeds op dezelfde positie staat als voorheen, stelt u de vensterindeling opnieuw in (Venster/Vensterindeling opnieuw instellen).
Klik op de knop (het bevat het pictogram Zoeken) in het taakvenster. Selecteer een ondersteund geluids- of videobestand, bijvoorbeeld C:\windows\media\chimes.waven druk vervolgens op openen.
Je zou het klokkenspel moeten horen.