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
Folgen Sie den Anweisungen in Gewusst wie: Ändern Sie den Text eines Menübefehls , ein Menüelement zu erstellen, das Der neue Textbenannt ist.
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);
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