Udostępnij za pośrednictwem


Zmienianie wyglądu polecenia

Opinię możesz przekazać użytkownikowi, zmieniając wygląd polecenia. Na przykład możesz chcieć, aby polecenie wyglądało inaczej, gdy jest niedostępne. Możesz udostępnić lub niedostępne polecenia, ukryć je lub pokazać albo zaznaczyć lub usunąć zaznaczenie w menu.

Aby zmienić wygląd polecenia, wykonaj jedną z następujących akcji:

  • Określ odpowiednie flagi w definicji polecenia w pliku tabeli poleceń.

  • OleMenuCommandService Użyj usługi.

  • Zaimplementuj IOleCommandTarget interfejs i zmodyfikuj nieprzetworzone obiekty poleceń.

    W poniższych krokach pokazano, jak znaleźć i zaktualizować wygląd polecenia przy użyciu programu Managed Package Framework (MPF).

Aby zmienić wygląd polecenia menu

  1. Postępuj zgodnie z instrukcjami w temacie Zmienianie tekstu polecenia menu, aby utworzyć element menu o nazwie New Text.

  2. W pliku ChangeMenuText.cs dodaj następującą instrukcję using:

    using System.Security.Permissions;
    
  3. W pliku ChangeMenuTextPackageGuids.cs dodaj następujący wiersz:

    public const string guidChangeMenuTextPackageCmdSet= "00000000-0000-0000-0000-00000000";  // get the GUID from the .vsct file
    
  4. W pliku ChangeMenuText.cs zastąp kod w metodzie ShowMessageBox następującym kodem:

    private void Execute(object sender, EventArgs e)
    {
        ThreadHelper.ThrowIfNotOnUIThread();
        var command = sender as OleMenuCommand;
        if (command.Text == "New Text")
            ChangeMyCommand(command.CommandID.ID, false);
    }
    
  5. Uzyskaj polecenie, które chcesz zaktualizować z OleMenuCommandService obiektu, a następnie ustaw odpowiednie właściwości w obiekcie polecenia. Na przykład poniższa metoda sprawia, że określone polecenie z zestawu poleceń VSPackage jest dostępne lub niedostępne. Poniższy kod sprawia, że element menu o nazwie New Text jest niedostępny po kliknięciu.

    public bool ChangeMyCommand(int cmdID, bool enableCmd)
    {
        bool cmdUpdated = false;
        var mcs = this.package.GetService<IMenuCommandService, OleMenuCommandService>();
        var newCmdID = new CommandID(new Guid(ChangeMenuTextPackageGuids.guidChangeMenuTextPackageCmdSet), cmdID);
        MenuCommand mc = mcs.FindCommand(newCmdID);
        if (mc != null)
        {
            mc.Enabled = enableCmd;
            cmdUpdated = true;
        }
        return cmdUpdated;
    }
    
  6. Skompiluj projekt i rozpocznij debugowanie. Powinno zostać wyświetlone eksperymentalne wystąpienie programu Visual Studio.

  7. W menu Narzędzia kliknij polecenie Wywołaj changeMenuText. W tym momencie nazwa polecenia to Invoke ChangeMenuText, więc program obsługi poleceń nie wywołuje polecenia ChangeMyCommand().

  8. W menu Narzędzia powinien być teraz widoczny nowy tekst. Kliknij pozycję Nowy tekst. Polecenie powinno być teraz wyszarywane.