Menüye Alt Menü Ekleme
Bu izlenecek yol, TestMenu menüsüne nasıl alt menü ekleneceğini göstererek Visual Studio Menü Çubuğuna Menü Ekle'deki tanıtıma dayalıdır.
Alt menü, başka bir menüde görünen ikincil bir menüdür. Bir alt menü, adını izleyen ok tarafından tanımlanabilir. Ada tıklanması, alt menüs ve komutlarının görüntülenmesine neden olur.
Bu izlenecek yol, Visual Studio menü çubuğundaki bir menüde bir alt menü oluşturur ve alt menüye yeni bir komut yerleştirir. İzlenecek yol, yeni komutu da uygular.
Menüye Alt Menü Ekleme
Projeyi ve menü öğesini oluşturmak için Visual Studio Menü Çubuğuna Menü Ekle'deki adımları izleyin. Bu kılavuzdaki adımlarda VSIX projesinin adının olduğu varsayılır
TopLevelMenu
.TestCommandPackage.vsct dosyasını açın.
<Symbols>
bölümünde, "guidTopLevelMenuCmdSet" adlı düğümde<GuidSymbol>
alt menü için bir<IDSymbol>
öğe, alt menü grubu için bir öğe ve komut için bir öğe ekleyin. Bu, üst düzey menünün<IDSymbol>
öğesini içeren düğümdür.<IDSymbol name="SubMenu" value="0x1100"/> <IDSymbol name="SubMenuGroup" value="0x1150"/> <IDSymbol name="cmdidTestSubCommand" value="0x0105"/>
Yeni oluşturulan alt menüyü
<Menus>
bölümüne ekleyin.<Menu guid="guidTestCommandPackageCmdSet" id="SubMenu" priority="0x0100" type="Menu"> <Parent guid="guidTestCommandPackageCmdSet" id="MyMenuGroup"/> <Strings> <ButtonText>Sub Menu</ButtonText> <CommandName>Sub Menu</CommandName> </Strings> </Menu>
Üst öğesinin GUID/ID çifti, Visual Studio Menü Çubuğuna Menü Ekle'de oluşturulan menü grubunu belirtir ve üst düzey menünün alt öğesidir.
2. adımda tanımlanan menü grubunu bölüme
<Groups>
ekleyin ve alt menünün alt öğesi yapın.<Group guid="guidTestCommandPackageCmdSet" id="SubMenuGroup" priority="0x0000"> <Parent guid="guidTestCommandPackageCmdSet" id="SubMenu"/> </Group>
2. adımda oluşturulan komutu alt menüdeki bir öğe olarak tanımlamak için bölüme yeni
<Button>
bir öğe<Buttons>
ekleyin.<Button guid="guidTestCommandPackageCmdSet" id="cmdidTestSubCommand" priority="0x0000" type="Button"> <Parent guid="guidTestCommandPackageCmdSet" id="SubMenuGroup" /> <Icon guid="guidImages" id="bmpPic2" /> <Strings> <CommandName>cmdidTestSubCommand</CommandName> <ButtonText>Test Sub Command</ButtonText> </Strings> </Button>
Çözümü derleyin ve hata ayıklamaya başlayın. Deneysel örneği görmeniz gerekir.
Alt Menü adlı yeni bir alt menü görmek için TestMenu'ya tıklayın. Alt Menü'ye tıklayarak alt menüyü açın ve Test Alt Komutu adlı yeni bir komut görün. Alt Komutu Test Et'e tıklanması hiçbir şey yapmaz.
Komut Ekle
TestCommand.cs dosyasını açın ve mevcut komut kimliğinden sonra aşağıdaki komut kimliğini ekleyin.
public const int cmdidTestSubCmd = 0x0105;
Alt komutu ekleyin. Komut oluşturucusunu bulun. Yönteminin çağrısının
AddCommand
hemen arkasına aşağıdaki satırları ekleyin.CommandID subCommandID = new CommandID(CommandSet, cmdidTestSubCmd); MenuCommand subItem = new MenuCommand(new EventHandler(SubItemCallback), subCommandID); commandService.AddCommand(subItem);
Komut
SubItemCallback
işleyicisi daha sonra tanımlanacaktır. Oluşturucu şimdi şöyle görünmelidir:private TestCommand(Package package) { if (package == null) { throw new ArgumentNullException("package"); } this.package = package; OleMenuCommandService commandService = this.ServiceProvider.GetService(typeof(IMenuCommandService)) as OleMenuCommandService; if (commandService != null) { var menuCommandID = new CommandID(CommandSet, CommandId); var menuItem = new MenuCommand(this.MenuItemCallback, menuCommandID); commandService.AddCommand(menuItem); CommandID subCommandID = new CommandID(CommandSet, cmdidTestSubCmd); MenuCommand subItem = new MenuCommand(new EventHandler(SubItemCallback), subCommandID); commandService.AddCommand(subItem); } }
ekleyin
SubItemCallback()
. Bu, alt menüdeki yeni komut tıklandığında çağrılan yöntemdir.private void SubItemCallback(object sender, EventArgs e) { ThreadHelper.ThrowIfNotOnUIThread(); IVsUIShell uiShell = this.package.GetService<SVsUIShell, IVsUIShell>(); Guid clsid = Guid.Empty; int result; uiShell.ShowMessageBox( 0, ref clsid, "TestCommand", string.Format(CultureInfo.CurrentCulture, "Inside TestCommand.SubItemCallback()", this.ToString()), string.Empty, 0, OLEMSGBUTTON.OLEMSGBUTTON_OK, OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST, OLEMSGICON.OLEMSGICON_INFO, 0, out result); }
Projeyi derleyin ve hata ayıklamaya başlayın. Deneysel örnek görünmelidir.
Test Menüsü menüsünde Alt Menü'ye ve ardından Test Alt Komutu'na tıklayın. Bir ileti kutusu görünmelidir ve "TestCommand.SubItemCallback() İçinde Test Komutu" metnini görüntülemelidir.