Freigeben über


Ändern der Darstellung eines Befehls

Sie können Ihren Benutzern Feedback geben, indem Sie die Darstellung eines Befehls ändern. Beispielsweise möchten Sie, dass ein Befehl anders aussieht, wenn er nicht verfügbar ist. Sie können Befehle verfügbar machen oder nicht verfügbar machen, sie ausblenden oder anzeigen, oder sie im Menü aktivieren oder deaktivieren.

Führen Sie eine der folgenden Aktionen aus, um die Darstellung eines Befehls zu ändern:

  • Geben Sie die entsprechenden Flags in der Befehlsdefinition in der Befehlstabellendatei an.

  • Verwenden Sie den OleMenuCommandService Dienst.

  • Implementieren Sie die IOleCommandTarget Schnittstelle, und ändern Sie die unformatierten Befehlsobjekte.

    Die folgenden Schritte zeigen, wie Sie das Erscheinungsbild eines Befehls mithilfe des verwalteten Paketframeworks (Managed Package Framework, MPF) suchen und aktualisieren.

So ändern Sie die Darstellung eines Menübefehls

  1. Folgen Sie den Anweisungen unter Ändern des Texts eines Menübefehls , um ein Menüelement mit dem Namen New Textzu erstellen.

  2. Fügen Sie in der Datei "ChangeMenuText.cs " die folgende using-Anweisung hinzu:

    using System.Security.Permissions;
    
  3. Fügen Sie in der Datei ChangeMenuTextPackageGuids.cs die folgende Zeile hinzu:

    public const string guidChangeMenuTextPackageCmdSet= "00000000-0000-0000-0000-00000000";  // get the GUID from the .vsct file
    
  4. Ersetzen Sie in der Datei ChangeMenuText.cs den Code in der ShowMessageBox-Methode durch Folgendes:

    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. Rufen Sie den Befehl ab, den Sie aus dem OleMenuCommandService Objekt aktualisieren möchten, und legen Sie dann die entsprechenden Eigenschaften für das Befehlsobjekt fest. Mit der folgenden Methode wird beispielsweise der angegebene Befehl aus einem VSPackage-Befehlssatz verfügbar oder nicht verfügbar. Der folgende Code macht das Menüelement nach New Text dem Klicken nicht verfügbar.

    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. Erstellen Sie das Projekt, und starten Sie das Debugging. Die experimentelle Instanz von Visual Studio sollte angezeigt werden.

  7. Klicken Sie im Menü "Extras " auf den Befehl "ChangeMenuText aufrufen". An diesem Punkt lautet der Befehlsname Invoke ChangeMenuText, sodass der Befehlshandler "ChangeMyCommand()" nicht aufruft.

  8. Im Menü "Extras" sollte jetzt "Neuer Text" angezeigt werden. Klicken Sie auf "Neuer Text". Der Befehl sollte jetzt abgeblendt sein.