Bagikan melalui


Mengubah teks perintah menu

Langkah-langkah berikut menunjukkan cara mengubah label teks perintah menu dengan menggunakan IMenuCommandService layanan.

Mengubah label perintah menu dengan IMenuCommandService

  1. Buat proyek VSIX bernama MenuText dengan perintah menu bernama ChangeMenuText. Untuk informasi selengkapnya, lihat Membuat ekstensi dengan perintah menu.

  2. 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>
    
  3. 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 .

  4. 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);
    }
    
  5. Bangun proyek dan mulai penelusuran kesalahan. Instans eksperimental Visual Studio muncul.

  6. Pada menu Alat , Anda akan melihat perintah bernama Panggil ChangeMenuText.

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