Mengubah teks perintah menu
Langkah-langkah berikut menunjukkan cara mengubah label teks perintah menu dengan menggunakan IMenuCommandService layanan.
Mengubah label perintah menu dengan IMenuCommandService
Buat proyek VSIX bernama
MenuText
dengan perintah menu bernama ChangeMenuText. Untuk informasi selengkapnya, lihat Membuat ekstensi dengan perintah menu.Dalam file .vsct, tambahkan
TextChanges
bendera ke perintah menu Anda, seperti yang ditunjukkan dalam contoh berikut.<Button guid="guidChangeMenuTextPackageCmdSet" id="ChangeMenuTextId" priority="0x0100" type="Button"> <Parent guid="guidChangeMenuTextPackageCmdSet" id="MyMenuGroup" /> <Icon guid="guidImages" id="bmpPic1" /> <CommandFlag>TextChanges</CommandFlag> <Strings> <ButtonText>Invoke ChangeMenuText</ButtonText> </Strings> </Button>
Dalam file ChangeMenuText.cs, buat penanganan aktivitas yang akan dipanggil sebelum perintah menu ditampilkan.
private void OnBeforeQueryStatus(object sender, EventArgs e) { var myCommand = sender as OleMenuCommand; if (null != myCommand) { myCommand.Text = "New Text"; } }
Anda juga dapat memperbarui status perintah menu dalam metode ini dengan mengubah Visibleproperti , , Checkeddan Enabled pada OleMenuCommand objek .
Di konstruktor ChangeMenuText, ganti inisialisasi OleMenuCommand perintah asli dan kode penempatan dengan kode yang membuat (bukan
MenuCommand
) yang mewakili perintah menu, menambahkan BeforeQueryStatus penanganan aktivitas, dan memberikan perintah menu ke layanan perintah menu.Berikut adalah tampilannya:
private ChangeMenuText(AsyncPackage package, OleMenuCommandService commandService) { this.package = package ?? throw new ArgumentNullException(nameof(package)); commandService = commandService ?? throw new ArgumentNullException(nameof(commandService)); var menuCommandID = new CommandID(CommandSet, CommandId); var menuItem = new OleMenuCommand(this.Execute, menuCommandID); menuItem.BeforeQueryStatus += new EventHandler(OnBeforeQueryStatus); commandService.AddCommand(menuItem); }
Bangun proyek dan mulai penelusuran kesalahan. Instans eksperimental Visual Studio muncul.
Pada menu Alat , Anda akan melihat perintah bernama Panggil ChangeMenuText.
Klik perintah . Anda akan melihat kotak pesan yang mengumumkan bahwa MenuItemCallback telah dipanggil. Saat Anda menutup kotak pesan, Anda akan melihat bahwa nama perintah pada menu Alat sekarang adalah Teks Baru.