Freigeben über


Gewusst wie: Ändern der Darstellung eines Befehls

Sie können dem Benutzer Feed-back aus dem Ändern der Darstellung eines Befehls bereitstellen. Angenommen, Sie möchten einen Befehl, unterschiedlich aussehen, wenn es nicht verfügbar ist. Sie können Befehle verfügbar oder nicht verfügbar oder blenden sie anzeigen oder überprüfen oder deaktivieren Sie im Menü.

Um die Darstellung eines Befehls zu ändern, führen Sie eine dieser Aktionen aus:

  • Geben Sie die entsprechenden Flags in der tabellendatei Befehls in der Befehlsdefinition an.

  • Verwenden Sie den OleMenuCommandService Dienst.

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

Die folgenden Schritte zeigen, wie die Darstellung eines Befehls finden und aktualisiert, indem sie das verwaltete Paketframework (MPF) verwenden.

So ändern Sie die Darstellung eines Menübefehls

  1. Folgen Sie den Anweisungen in Gewusst wie: Ändern Sie den Text eines Menübefehls , ein Menüelement zu erstellen, das Der neue Textbenannt ist.

  2. In der benannten VSPackage-Quelldatei Fügen MenuTextPackage.cs, z. B. die folgenden Zeilen am Ende der MenuItemCallback-Methode hinzu.

    var command = sender as OleMenuCommand;
    if (command.Text == "New Text") EnableMyCommand(command.CommandID.ID, false);
    
  3. Rufen Sie den Befehl, den Sie aus dem OleMenuCommandService-Objekt aktualisieren und die entsprechenden Eigenschaften für das Befehlsobjekt festlegen möchten. Zum Beispiel ist die folgende Methode den angegebenen Befehl aus einem festgelegten verfügbaren VSPackage-Befehls oder ein nicht verfügbar.

    <PrincipalPermission(SecurityAction.Demand)> _
    Public Function EnableMyCommand(ByVal cmdID As Integer, ByVal fEnableCmd As Boolean) As Boolean 
        Dim fCmdUpdated As Boolean = False 
        Dim mcs As OleMenuCommandService = TryCast(Me.GetService(GetType(IMenuCommandService)), OleMenuCommandService)
        Dim newCmdID As CommandID = New CommandID(GuidList.guidMenuTextCmdSet, cmdID)
        Dim mc As MenuCommand = mcs.FindCommand(newCmdID)
        If mc IsNot Nothing Then
            mc.Enabled = fEnableCmd
            fCmdUpdated = True 
        End If 
        Return fCmdUpdated
    End Function
    
    [PrincipalPermission(SecurityAction.Demand)]
    public bool EnableMyCommand(int cmdID, bool fEnableCmd)
    {
        bool fCmdUpdated = false;
        var mcs = this.GetService(typeof(IMenuCommandService))
                as OleMenuCommandService;
        var newCmdID = new CommandID(GuidList.guidMenuTextCmdSet, cmdID);
        MenuCommand mc = mcs.FindCommand(newCmdID);
        if (mc != null)
        {
            mc.Enabled = fEnableCmd;
            fCmdUpdated = true;
        }
        return fCmdUpdated;
    }
    

    Dies macht das Menüelement, das Der neue Text Namen nicht verfügbar ist, nachdem darauf geklickt wurde.

Siehe auch

Konzepte

Wie VSPackages Benutzeroberflächenelemente Hinzufügen der IDE

Weitere Ressourcen

Befehle, Menüs und Symbolleisten

Allgemeine Aufgaben mit Befehlen, Menüs und Symbolleisten

(Visual Studio-Befehls-Tabelle. Dateien Vsct)