Cómo: Cambiar el aspecto de un comando
Puede proporcionar información al usuario cambiar el aspecto de un comando. Por ejemplo, puede que desee un comando de aspecto distinto cuando no está disponible. Puede crear comandos disponibles o no disponible, las oculta o muestra, o los activa o desactiva en el menú.
Para cambiar la apariencia de un comando, realice una de estas acciones:
Especifique los marcadores adecuados en la definición de comando en el archivo de tabla de comandos.
utilice el servicio de OleMenuCommandService .
Implemente la interfaz de IOleCommandTarget y modifique los objetos de comando sin formato.
Los pasos siguientes muestran cómo buscar y actualizar el aspecto de un comando mediante el (MPF) managed package.
Para cambiar la apariencia de un comando de menú
Siga las instrucciones de Cómo: cambie el texto de un comando de menú de crear un elemento de menú denominado nuevo texto.
En el archivo de código fuente de VSPackage denominado, por ejemplo, MenuTextPackage.cs, agregue las siguientes líneas al final del método de MenuItemCallback .
var command = sender as OleMenuCommand; if (command.Text == "New Text") EnableMyCommand(command.CommandID.ID, false);
Obtenga el comando que desee actualizar el objeto de OleMenuCommandService a continuación para establecer las propiedades adecuadas en el objeto de comando. Por ejemplo, el método siguiente crea el comando especificado de un disponibles del comando de VSPackage o no disponible.
<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; }
Esto hace que el elemento de menú denominado nuevo texto no disponible después de que se ha hecho clic.
Vea también
Conceptos
Cómo VSPackages agrega elementos de la interfaz de usuario al IDE
Otros recursos
comandos, menús, y barras de herramientas
Tareas comunes con los comandos, menús, barras de herramientas y