Změna vzhledu příkazu

Svůj názor můžete poskytnout uživateli tak, že změníte vzhled příkazu. Můžete například chtít, aby příkaz vypadal jinak, když je nedostupný. Příkazy můžete zpřístupnit nebo nedostupné, skrýt nebo zobrazit nebo je můžete zkontrolovat nebo zrušit jejich zaškrtnutí v nabídce.

Pokud chcete změnit vzhled příkazu, proveďte jednu z těchto akcí:

  • Zadejte příslušné příznaky v definici příkazu v souboru tabulky příkazů.

  • OleMenuCommandService Použijte službu.

  • IOleCommandTarget Implementujte rozhraní a upravte nezpracované objekty příkazů.

    Následující kroky ukazují, jak najít a aktualizovat vzhled příkazu pomocí rozhraní MPF (Managed Package Framework).

Změna vzhledu příkazu nabídky

  1. Postupujte podle pokynů v části Změna textu příkazu nabídky a vytvořte položku nabídky s názvem New Text.

  2. Do souboru ChangeMenuText.cs přidejte následující příkaz using:

    using System.Security.Permissions;
    
  3. Do souboru ChangeMenuTextPackageGuids.cs přidejte následující řádek:

    public const string guidChangeMenuTextPackageCmdSet= "00000000-0000-0000-0000-00000000";  // get the GUID from the .vsct file
    
  4. V souboru ChangeMenuText.cs nahraďte kód v Metodě ShowMessageBox následujícím kódem:

    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. Získejte příkaz, který chcete aktualizovat z objektu OleMenuCommandService , a pak nastavte příslušné vlastnosti objektu příkazu. Například následující metoda zpřístupňuje zadaný příkaz ze sady příkazů VSPackage nebo není k dispozici. Následující kód způsobí, že položka New Text nabídky je po kliknutí nedostupná.

    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. Sestavte projekt a spusťte ladění. Měla by se zobrazit experimentální instance sady Visual Studio.

  7. V nabídce Nástroje klepněte na příkaz Vyvolat ChangeMenuText. V tomto okamžiku je název příkazu Vyvolána ChangeMenuText, takže obslužná rutina příkazu nevolá ChangeMyCommand().

  8. V nabídce Nástroje by se teď měl zobrazit nový text. Klikněte na Nový text. Příkaz by teď měl být neaktivní.