Menü komutunun metnini değiştirme

Aşağıdaki adımlarda, hizmeti kullanarak menü komutunun metin etiketini değiştirme adımları gösterilmektedir IMenuCommandService .

IMenuCommandService ile menü komut etiketini değiştirme

  1. ChangeMenuText adlı bir menü komutuyla adlı MenuTextbir VSIX projesi oluşturun. Daha fazla bilgi için bkz . Menü komutuyla uzantı oluşturma.

  2. .vsct dosyasında, aşağıdaki örnekte gösterildiği gibi menü komutunuza bayrağını ekleyinTextChanges.

    <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. ChangeMenuText.cs dosyasında, menü komutu görüntülenmeden önce çağrılacak bir olay işleyicisi oluşturun.

    private void OnBeforeQueryStatus(object sender, EventArgs e)
    {
        var myCommand = sender as OleMenuCommand;
        if (null != myCommand)
        {
            myCommand.Text = "New Text";
        }
    }
    

    Nesnedeki , Checkedve Enabled özelliklerini değiştirerek bu yöntemdeki menü komutunun VisibleOleMenuCommand durumunu da güncelleştirebilirsiniz.

  4. ChangeMenuText oluşturucusunda, özgün komut başlatma ve yerleştirme kodunu, menü komutunu temsil eden bir (yerine) oluşturan, olay işleyicisini ekleyen BeforeQueryStatus ve menü komutunu menü komut hizmetine veren bir OleMenuCommandMenuCommandkodla değiştirin.

    Şuna benzemesi gerekenler şunlardır:

    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. Projeyi derleyin ve hata ayıklamaya başlayın. Visual Studio'nun deneysel örneği görüntülenir.

  6. Araçlar menüsünde ChangeMenuText Çağır adlı bir komut görmeniz gerekir.

  7. Komuta tıklayın. MenuItemCallback'in çağrıldığını duyuran ileti kutusunu görmeniz gerekir. İleti kutusunu kapattığınızda, Araçlar menüsündeki komutun adının artık Yeni Metin olduğunu görmeniz gerekir.