Cómo VSPackages agregar elementos de la interfaz de usuarioHow VSPackages add user interface elements

Un VSPackage puede agregar elementos de interfaz de usuario, por ejemplo, menús, barras de herramientas y las ventanas en Visual Studio por medio de la .vsct archivo.A VSPackage can add user interface (UI) elements, for example, menus, toolbars, and tool windows, to Visual Studio by means of the .vsct file.

Puede encontrar directrices de diseño para los elementos de interfaz de usuario en instrucciones para la experiencia de usuario de Visual Studio.You can find design guidelines for UI elements at Visual Studio user experience guidelines.

La arquitectura de tabla de comandos de Visual StudioThe Visual Studio command table architecture

Como se mencionó, la arquitectura de la tabla de comandos es compatible con los principios de arquitectura anteriores.As noted, the command table architecture supports the foregoing architectural principles. Los principios detrás de las abstracciones, estructuras de datos y herramientas de la arquitectura de la tabla de comandos son los siguientes:The tenets behind the abstractions, data structures, and tools of the command table architecture are as follows:

  • Hay tres tipos básicos de elementos: menús, comandos y grupos.There are three basic kinds of items: menus, commands, and groups. Los menús pueden exponerse en la interfaz de usuario como menús, submenús, barras de herramientas o ventanas de herramientas.Menus can be exposed in the UI as menus, submenus, toolbars, or tool windows. Los comandos son procedimientos que el usuario puede ejecutar en el IDE, y pueden exponerse como elementos de menú, botones, cuadros de lista u otros controles.Commands are procedures that the user can execute in the IDE, and they can be exposed as menu items, buttons, list boxes, or other controls. Los grupos son contenedores para los menús y comandos.Groups are containers for both menus and commands.

  • Cada elemento viene especificada por una definición que describe el elemento, su prioridad relativa respecto a otros elementos y las marcas que modifican su comportamiento.Each item is specified by a definition that describes the item, its priority relative to other items, and the flags that modify its behavior.

  • Cada elemento tiene una selección de ubicación que describe al elemento primario del elemento.Each item has a placement that describes the parent of the item. Un elemento puede tener varios elementos primarios, por lo que puede aparecer en varias ubicaciones de la interfaz de usuario.An item can have multiple parents, so that it can appear in multiple locations in the UI.

    Cada comando debe tener un grupo como su elemento primario, incluso si es el único elemento secundario de ese grupo.Every command must have a group as its parent, even if it is the only child in that group. Cada menú estándar también debe tener un grupo primario.Every standard menu must also have a parent group. Las barras de herramientas y ventanas de herramientas actúan como sus propios elementos primarios.Toolbars and tool windows act as their own parents. Un grupo puede tener como su elemento primario de la barra de menús de Visual Studio principal, o cualquier menú, barra de herramientas o ventana de herramientas.A group can have as its parent the main Visual Studio menu bar, or any menu, toolbar, or tool window.

Cómo se definen los elementosHow items are defined

Un .vsct archivo tenga el formato en XML.A .vsct file is formatted in XML. Define los elementos de interfaz de usuario para un paquete y determina dónde aparecen los elementos en el IDE.It defines the UI elements for a package and determines where those elements appear in the IDE. Cada menú, grupo o comando en el paquete primero se asigna un GUID y un identificador en el Symbols sección.Every menu, group, or command in the package is first assigned a GUID and ID in the Symbols section. En el resto de la .vsct archivo, cada menú, el comando y el grupo se identifican mediante su combinación de GUID y el ID.Throughout the rest of the .vsct file, each menu, command, and group is identified by its GUID and ID combination. El ejemplo siguiente muestra una típica Symbols sección como el generado por la plantilla de paquete de Visual Studio cuando un comando de menú está seleccionado en la plantilla.The following example shows a typical Symbols section as generated by the Visual Studio package template when a Menu Command is selected in the template.

<Symbols>  
  <!-- This is the package guid. -->  
  <GuidSymbol name="guidMenuTextPkg" value="{b1253bc6-d266-402b-89e7-5e3d3b22c746}" />  

  <!-- This is the guid used to group the menu commands together -->  
  <GuidSymbol name="guidMenuTextCmdSet" value="{a633d4e4-6c65-4436-a138-1abeba7c9a69}">  

    <IDSymbol name="MyMenuGroup" value="0x1020" />  
    <IDSymbol name="cmdidMyCommand" value="0x0100" />  
  </GuidSymbol>  

  <GuidSymbol name="guidImages" value="{53323d9a-972d-4671-bb5b-9e418480922f}" >  
    <IDSymbol name="bmpPic1" value="1" />  
    <IDSymbol name="bmpPic2" value="2" />  
    <IDSymbol name="bmpPicSearch" value="3" />  
    <IDSymbol name="bmpPicX" value="4" />  
    <IDSymbol name="bmpPicArrows" value="5" />  
  </GuidSymbol>  
</Symbols>  

El elemento de nivel superior de la Symbols sección es la GuidSymbol (elemento).The top-level element of the Symbols section is the GuidSymbol element. GuidSymbol elementos asignan nombres a los GUID que se usan por el IDE para identificar los paquetes y sus componentes.GuidSymbol elements map names to GUIDs that are used by the IDE to identify packages and their component parts.

Nota

Los GUID se generan automáticamente la plantilla de paquete de Visual Studio.GUIDs are generated automatically by the Visual Studio package template. También puede crear un GUID único haciendo crear GUID en el herramientas menú.You can also create a unique GUID by clicking Create GUID on the Tools menu.

La primera GuidSymbol elemento, guid<PackageName>Pkg, es el GUID del propio paquete.The first GuidSymbol element, guid<PackageName>Pkg, is the GUID of the package itself. Este es el GUID que se usa Visual Studio para cargar el paquete.This is the GUID that is used by Visual Studio to load the package. Normalmente, no tiene elementos secundarios.Typically, it does not have child elements.

Por convención, los menús y comandos se agrupan bajo un segundo GuidSymbol elemento, guid<PackageName>CmdSet, y los mapas de bits en un tercer GuidSymbol elemento, guidImages.By convention, menus and commands are grouped under a second GuidSymbol element, guid<PackageName>CmdSet, and bitmaps are under a third GuidSymbol element, guidImages. No es necesario seguir esta convención, pero cada menú, grupo, comandos y mapa de bits deben ser un elemento secundario de un GuidSymbol elemento.You do not have to follow this convention, but each menu, group, command, and bitmap must be a child of a GuidSymbol element.

En el segundo GuidSymbol elemento, que representa el conjunto de comandos de paquete, son varios IDSymbol elementos.In the second GuidSymbol element, which represents the package command set, are several IDSymbol elements. Cada IDSymbol (elemento) asigna un nombre a un valor numérico y puede representar un menú, grupo o comando que forma parte del conjunto de comandos.Each IDSymbol element maps a name to a numeric value, and may represent a menu, group, or command that is part of the command set. El IDSymbol elementos en la tercera GuidSymbol elemento representan los mapas de bits se pueden usar como iconos para los comandos.The IDSymbol elements in the third GuidSymbol element represent bitmaps that may be used as icons for commands. Como pares identificador/GUID deben ser únicos en una aplicación, no hay dos elementos secundarios del mismo GuidSymbol elemento puede tener el mismo valor.Because GUID/ID pairs must be unique in an application, no two children of the same GuidSymbol element may have the same value.

Cuando un menú, grupo o comando tiene un GUID y un identificador, se puede agregar al IDE.When a menu, group, or command has a GUID and ID, it can be added to the IDE. Cada elemento de interfaz de usuario debe tener lo siguiente:Every UI element must have the following things:

  • Un guid atributo que coincida con el nombre de la GuidSymbol elemento definido en el elemento de interfaz de usuario.A guid attribute that matches the name of the GuidSymbol element that the UI element is defined under.

  • Un id atributo que coincida con el nombre del asociado IDSymbol elemento.An id attribute that matches the name of the associated IDSymbol element.

    Juntos, el guid y id atributos componen el firma del elemento de interfaz de usuario.Together, the guid and id attributes compose the signature of the UI element.

  • Un priority atributo que determina la posición del elemento de interfaz de usuario en su menú primario o un grupo.A priority attribute that determines the placement of the UI element in its parent menu or group.

  • Un elemento primario cuya guid y id atributos que especifican la firma del menú primario o del grupo.A Parent element that has guid and id attributes that specify the signature of the parent menu or group.

Cada menú se define como un el elemento de menú en la Menus sección.Each menu is defined as a Menu element in the Menus section. Deben tener los menús guid, id, y priority atributos y un Parent elemento y también los siguientes atributos adicionales y elementos secundarios:Menus must have guid, id, and priority attributes, and a Parent element, and also the following additional attributes and children:

  • Un type atributo que especifica si el menú debe aparecer en el IDE como una especie de menú o como una barra de herramientas.A type attribute that specifies whether the menu should appear in the IDE as a kind of menu or as a toolbar.

  • Un Strings (elemento) que contiene un ButtonText (elemento), que especifica el título del menú en el IDE y un CommandName (elemento), que especifica el nombre que es utilizado en el comando ventana para acceder al menú.A Strings element that contains a ButtonText element, which specifies the title of the menu in the IDE, and a CommandName element, which specifies the name that is used in the Command window to access the menu.

  • Marcas opcionales.Optional flags. Un CommandFlag elemento puede aparecer en una definición de menú para cambiar su apariencia o comportamiento en el IDE.A CommandFlag element may appear in a menu definition to change its appearance or behavior in the IDE.

    Cada Menu elemento debe tener un grupo como su elemento primario, a menos que sea un elemento, como una barra de herramientas acoplable.Every Menu element must have a group as its parent, unless it is a dockable element such as a toolbar. Un menú acoplable es su elemento primario.A dockable menu is its own parent. Para obtener más información acerca de los menús y los valores de la type atributo, vea el el elemento de menú documentación.For more information about menus and values for the type attribute, see the Menu element documentation.

    El ejemplo siguiente muestra un menú que aparece en la barra de menús de Visual Studio, junto a la herramientas menú.The following example shows a menu that appears on the Visual Studio menu bar, next to the Tools menu.

<Menu guid="guidTopLevelMenuCmdSet"  
id="TopLevelMenu" priority="0x700" type="Menu">  
  <Parent guid="guidSHLMainMenu"  
          id="IDG_VS_MM_TOOLSADDINS" />  
  <Strings>  
    <ButtonText>TestMenu</ButtonText>  
    <CommandName>TestMenu</CommandName>  
  </Strings>  
</Menu>  

GruposGroups

Un grupo es un elemento que se define en el Groups sección de la .vsct archivo.A group is an item that is defined in the Groups section of the .vsct file. Los grupos son sólo contenedores.Groups are just containers. No aparecen en el IDE, excepto como una línea divisoria en un menú.They do not appear in the IDE except as a dividing line on a menu. Por lo tanto, un elemento Group se define únicamente por su firma, la prioridad y el elemento primario.Therefore, a Group element is defined only by its signature, priority, and parent.

Un grupo puede tener un menú de otro grupo o sí mismo como elemento primario.A group can have a menu, another group, or itself as parent. Sin embargo, el elemento primario es normalmente un menú o barra de herramientas.However, the parent is typically a menu or toolbar. El menú en el ejemplo anterior es un elemento secundario de la IDG_VS_MM_TOOLSADDINS grupo y ese grupo es un elemento secundario de la barra de menús de Visual Studio.The menu in the earlier example is a child of the IDG_VS_MM_TOOLSADDINS group, and that group is a child of the Visual Studio menu bar. El grupo en el ejemplo siguiente es un elemento secundario del menú en el ejemplo anterior.The group in the following example is a child of the menu in the earlier example.

 <Group guid="guidTopLevelMenuCmdSet" id="MyMenuGroup"  
priority="0x0600">  
   <Parent guid="guidTopLevelMenuCmdSet" id="TopLevelMenu"/>  
 </Group>  

Dado que es parte de un menú, este grupo normalmente contendría los comandos.Because it is part of a menu, this group would typically contain commands. Sin embargo, también podría contener otros menús.However, it could also contain other menus. Se trata de cómo se definen los submenús, tal como se muestra en el ejemplo siguiente.This is how submenus are defined, as shown in the following example.

<Menu guid="guidTopLevelMenuCmdSet" id="SubMenu"  
priority="0x0100" type="Menu">  
  <Parent guid="guidTopLevelMenuCmdSet" id="MyMenuGroup"/>  
  <Strings>  
    <ButtonText>Sub Menu</ButtonText>  
    <CommandName>Sub Menu</CommandName>  
  </Strings>  
</Menu>  

ComandosCommands

Un comando que se proporciona en el IDE se define como un elemento Button o un Combo (elemento).A command that is provided to the IDE is defined as either a Button element or a Combo element. Para que aparezca en un menú o una barra de herramientas, el comando debe tener un grupo como su elemento primario.To appear on a menu or a toolbar, the command must have a group as its parent.

BotonesButtons

Los botones se definen en el Buttons sección.Buttons are defined in the Buttons section. Cualquier elemento de menú, botón u otro elemento que un usuario hace clic para ejecutar un comando único se considera un botón.Any menu item, button, or other element that a user clicks to execute a single command is considered a button. Algunos tipos de botón también pueden incluir la funcionalidad de la lista.Some button types can also include list functionality. Los botones tienen la misma que se necesita y los atributos opcionales que tienen menús, y también puede tener un Icon (elemento) que especifica el GUID y el identificador del mapa de bits que representa el botón en el IDE.Buttons have the same required and optional attributes that menus have, and can also have an Icon element that specifies the GUID and ID of the bitmap that represents the button in the IDE. Para obtener más información sobre los botones y sus atributos, consulte el Buttons (elemento) documentación.For more information about buttons and their attributes, see the Buttons element documentation.

El botón en el ejemplo siguiente es un elemento secundario del grupo en el ejemplo anterior y aparecerá en el IDE como elemento de menú en el menú principal de ese grupo.The button in the following example is a child of the group in the earlier example, and would appear in the IDE as a menu item on the parent menu of that group.

<Button guid="guidTopLevelMenuCmdSet" id="cmdidTestCommand" priority="0x0100" type="Button">  
  <Parent guid="guidTopLevelMenuCmdSet" id="MyMenuGroup" />  
  <Icon guid="guidImages" id="bmpPic1" />  
  <Strings>  
    <CommandName>cmdidTestCommand</CommandName>  
    <ButtonText>Test Command</ButtonText>  
  </Strings>  
</Button>  
Cuadro combinadoCombos

Cuadro combinado se define en el Combos sección.Combos are defined in the Combos section. Cada Combo elemento representa un cuadro de lista desplegable en el IDE.Each Combo element represents a drop-down list box in the IDE. El cuadro de lista puede ser o no puedan escribir los usuarios, dependiendo del valor de la type atributo combinado de la.The list box may or may not be writable by users, depending on the value of the type attribute of the combo. Cuadro combinado tiene los mismos elementos y el comportamiento que los botones tienen y también puede tener los siguientes atributos adicionales:Combos have the same elements and behavior that buttons have, and can also have the following additional attributes:

  • Un defaultWidth atributo que especifica el ancho en píxeles.A defaultWidth attribute that specifies pixel width.

  • Un idCommandList atributo que especifica una lista que contiene los elementos que se muestran en el cuadro de lista.An idCommandList attribute that specifies a list that contains the items that are displayed in the list box. La lista de comandos debe declararse en el mismo GuidSymbol nodo que contiene el cuadro combinado.The command list must be declared in the same GuidSymbol node that contains the combo.

    El ejemplo siguiente define un elemento de cuadro combinado.The following example defines a combo element.

<Combos>  
  <Combo guid="guidFirstToolWinCmdSet"  
         id="cmdidWindowsMediaFilename"  
         priority="0x0100" type="DynamicCombo"  
         idCommandList="cmdidWindowsMediaFilenameGetList"  
         defaultWidth="130">  
    <Parent guid="guidFirstToolWinCmdSet"  
            id="ToolbarGroupID" />  
    <CommandFlag>IconAndText</CommandFlag>  
    <CommandFlag>CommandWellOnly</CommandFlag>  
    <CommandFlag>StretchHorizontally</CommandFlag>  
    <Strings>  
      <CommandName>Filename</CommandName>  
      <ButtonText>Enter a Filename</ButtonText>  
    </Strings>  
  </Combo>  
</Combos>  
Mapas de bitsBitmaps

Los comandos que se mostrará junto con un icono deben incluir un Icon elemento que hace referencia a un mapa de bits utilizando su GUID y un identificador.Commands that will be displayed together with an icon must include an Icon element that refers to a bitmap by using its GUID and ID. Cada mapa de bits se define como un elemento de mapa de bits en la Bitmaps sección.Each bitmap is defined as a Bitmap element in the Bitmaps section. Los únicos atributos obligatorios de una Bitmap definition son guid y href, que apunta al archivo de origen.The only required attributes for a Bitmap definition are guid and href, which points to the source file. Si el archivo de origen es una tira de recursos, un usedList atributo también es necesario, para enumerar las imágenes disponibles en la franja.If the source file is a resource strip, a usedList attribute is also required, to list the available images in the strip. Para obtener más información, consulte el elemento de mapa de bits documentación.For more information, see the Bitmap element documentation.

Relación jerárquicaParenting

Las siguientes reglas determinan cómo un elemento puede llamar a otro elemento como su elemento primario.The following rules govern how an item can call another item as its parent.

ElementoElement Definidos en esta sección de la tabla de comandosDefined in this section of the Command Table Pueden estar contenidos (como un elemento primario, o mediante la selección de ubicación en la CommandPlacements sección o ambos)May be contained (as a parent, or by placement in the CommandPlacements section, or both) Puede contener (denominado un elemento primario)May contain (referred to as a parent)
AgruparGroup Elemento Groups, el IDE, otros VSPackagesGroups element, the IDE, other VSPackages Un menú, un grupo, el propio elementoA menu, a group, the item itself Menús, grupos y comandosMenus, groups, and commands
MenúMenu Menus (elemento), el IDE, otros VSPackagesMenus element, the IDE, other VSPackages 1 para n grupos1 to n groups 0 para n grupos0 to n groups
Barra de herramientasToolbar Menus (elemento), el IDE, otros VSPackagesMenus element, the IDE, other VSPackages El propio elementoThe item itself 0 para n grupos0 to n groups
Elemento de menúMenu Item Elemento botones, el IDE, otros VSPackagesButtons element, the IDE, other VSPackages 1 para n agrupa, el propio elemento1 to n groups, the item itself -0 para n grupos-0 to n groups
BotónButton Elemento botones, el IDE, otros VSPackagesButtons element, the IDE, other VSPackages 1 para n agrupa, el propio elemento1 to n groups, the item itself
Cuadro combinadoCombo Combos (elemento), el IDE, otros VSPackagesCombos element, the IDE, other VSPackages 1 para n agrupa, el propio elemento1 to n groups, the item itself

Un menú, grupo o comando puede aparecer en más de una ubicación en el IDE.A menu, group, or command can appear in more than one location in the IDE. Un elemento que aparezca en varias ubicaciones, debe agregarse a la CommandPlacements sección como un CommandPlacement (elemento).For an item to appear in multiple locations, it must be added to the CommandPlacements section as a CommandPlacement element. Cualquier menú, grupo o comando se puede agregar como una ubicación del comando.Any menu, group, or command can be added as a command placement. Sin embargo, las barras de herramientas no se puede colocar de esta manera porque no aparecen en varias ubicaciones contextuales.However, toolbars cannot be positioned in this manner because they cannot appear in multiple context-sensitive locations.

Ubicaciones de comando tienen guid, id, y priority atributos.Command placements have guid, id, and priority attributes. El GUID y el identificador deben coincidir con los del elemento que se encuentra.The GUID and ID must match those of the item that is positioned. El priority atributo rige la posición del elemento con respecto a otros elementos.The priority attribute governs the placement of the item with regard to other items. Cuando el IDE combina dos o más elementos que tienen la misma prioridad, sus ubicaciones son indefinidos porque el IDE no garantiza que se leen los recursos del paquete en el mismo orden cada vez que se compila el paquete.When the IDE merges two or more items that have the same priority, their placements are undefined because the IDE does not guarantee that package resources are read in the same order every time that the package is built.

Si un menú o un grupo aparezca en varias ubicaciones, todos los elementos secundarios de ese menú o grupo aparecerá en cada instancia.If a menu or group appears in multiple locations, all children of that menu or group will appear in each instance.

Contexto y la visibilidad de comandoCommand visibility and context

Cuando se instalan varios VSPackages, una profusión de menús, elementos de menú y las barras de herramientas puede provocar un desorden en el IDE.When multiple VSPackages are installed, a profusion of menus, menu items, and toolbars may clutter the IDE. Para evitar este problema, puede controlar la visibilidad de los elementos de interfaz de usuario individuales mediante restricciones visibilidad y marcadores de comando.To avoid this problem, you can control the visibility of individual UI elements by using visibility constraints and command flags.

Restricción de visibilidadVisibility constraints

Una restricción de visibilidad se establece como un VisibilityItem elemento en la VisibilityConstraints sección.A visibility constraint is set as a VisibilityItem element in the VisibilityConstraints section. Una restricción de visibilidad define los contextos de interfaz de usuario concretos en el que está visible el elemento de destino.A visibility constraint defines specific UI contexts in which the target item is visible. Un menú o un comando que se incluye en esta sección solo está visible cuando uno de los contextos definidos está activa.A menu or command that is included in this section is visible only when one of the defined contexts is active. Si un menú o un comando no se hace referencia en esta sección, siempre es visible de forma predeterminada.If a menu or command is not referenced in this section, it is always visible by default. En esta sección no se aplica a los grupos.This section does not apply to groups.

VisibilityItem los elementos deben tener tres atributos, como sigue: el guid y id del elemento de interfaz de usuario de destino, y context.VisibilityItem elements must have three attributes, as follows: the guid and id of the target UI element, and context. El context atributo especifica cuándo será visible el elemento de destino y toma cualquier contexto de interfaz de usuario válido como su valor.The context attribute specifies when the target item will be visible, and takes any valid UI context as its value. Las constantes de contexto de interfaz de usuario de Visual Studio son miembros de la VSConstants clase.The UI context constants for Visual Studio are members of the VSConstants class. Cada VisibilityItem elemento puede tomar el valor de solo un contexto.Every VisibilityItem element can take only one context value. Para aplicar un segundo contexto, cree una segunda VisibilityItem elemento al que apunta al mismo elemento, tal como se muestra en el ejemplo siguiente.To apply a second context, create a second VisibilityItem element that points to the same item, as shown in the following example.

<VisibilityConstraints>  
  <VisibilityItem guid="guidSolutionToolbarCmdSet"  
        id="cmdidTestCmd"  
        context="UICONTEXT_SolutionHasSingleProject" />  
  <VisibilityItem guid="guidSolutionToolbarCmdSet"  
        id="cmdidTestCmd"  
        context="UICONTEXT_SolutionHasMultipleProjects" />  
</VisibilityConstraints>  

Marcadores de comandoCommand flags

Las siguientes marcas de comando pueden afectar a la visibilidad de los menús y comandos que se aplican.The following command flags can affect the visibility of the menus and commands they apply to.

AlwaysCreate
Incluso si no tiene botones ni grupos, se crea el menú.Menu is created even if it has no groups or buttons.

Válido para: MenuValid for: Menu

CommandWellOnly
Aplicar esta marca si el comando no aparece en el menú de nivel superior y desea que esté disponible para la personalización del shell adicionales, por ejemplo, enlazarlo a una clave.Apply this flag if the command does not appear on the top-level menu and you want to make it available for additional shell customization, for example, binding it to a key. Después de instala el paquete VSPackage, un usuario puede personalizar estos comandos, abra el opciones cuadro de diálogo y, a continuación, editar la colocación de comandos en el teclado entorno categoría.After the VSPackage is installed, a user can customize these commands by opening the Options dialog box and then editing the command placement under the Keyboard Environment category. No afecta a la ubicación en los menús contextuales, barras de herramientas, controladores de menús o submenús.Does not affect placement on shortcut menus, toolbars, menu controllers, or submenus.

Válido para: Button, ComboValid for: Button, Combo

DefaultDisabled
De forma predeterminada, el comando está deshabilitado si no está cargado el VSPackage que implemente el comando o no se ha llamado al método QueryStatus.By default, the command is disabled if the VSPackage that implements the command is not loaded or the QueryStatus method has not been called.

Válido para: Button, ComboValid for: Button, Combo

DefaultInvisible
De forma predeterminada, el comando es invisible si el VSPackage que implemente el comando no está cargado o no se ha llamado al método QueryStatus.By default, the command is invisible if the VSPackage that implements the command is not loaded or the QueryStatus method has not been called.

Se debe combinar con el DynamicVisibility marca.Should be combined with the DynamicVisibility flag.

Válido para: Button, Combo, MenuValid for: Button, Combo, Menu

DynamicVisibility
Se puede cambiar la visibilidad del comando mediante el uso de la QueryStatus método o un GUID de contexto que se incluye en el VisibilityConstraints sección.The visibility of the command can be changed by using the QueryStatus method or a context GUID that is included in the VisibilityConstraints section.

Se aplica a los comandos que aparecen en los menús, no en las barras de herramientas.Applies to commands that appear on menus, not on toolbars. Elementos de nivel superior de la barra de herramientas se pueden deshabilitar, pero no ocultos, cuando el OLECMDF_INVISIBLE marca se devuelve desde el QueryStatus método.Top-level toolbar items can be disabled, but not hidden, when the OLECMDF_INVISIBLE flag is returned from the QueryStatus method.

En un menú, esta marca indica también que se debe ocultarse automáticamente cuando sus miembros están ocultos.On a menu, this flag also indicates that it should be automatically hidden when its members are hidden. Esta marca normalmente se asigna a los submenús porque menús de nivel superior ya tienen este comportamiento.This flag is typically assigned to submenus because top-level menus already have this behavior.

Se debe combinar con el DefaultInvisible marca.Should be combined with the DefaultInvisible flag.

Válido para: Button, Combo, MenuValid for: Button, Combo, Menu

NoShowOnMenuController
Si un comando que tiene este indicador se coloca en un controlador de menú, el comando no aparece en la lista desplegable.If a command that has this flag is positioned on a menu controller, the command does not appear in the drop-down list.

Válido para: ButtonValid for: Button

Para obtener más información acerca de las marcas de comando, consulte el CommandFlag elemento documentación.For more information about command flags, see the CommandFlag element documentation.

Requisitos generalesGeneral requirements

El comando debe pasar a la siguiente serie de pruebas antes de mostrarse y habilitado:Your command must pass the following series of tests before it can be displayed and enabled:

  • El comando se coloca correctamente.The command is positioned correctly.

  • El DefaultInvisible no se establece la marca.The DefaultInvisible flag is not set.

  • El menú primario o la barra de herramientas está visible.The parent menu or toolbar is visible.

  • El comando no es invisible debido a una entrada de contexto en el VisibilityConstraints (elemento) sección.The command is not invisible because of a context entry in the VisibilityConstraints element section.

  • Código de VSPackage que implemente la IOleCommandTarget interfaz muestra y permite que el comando.VSPackage code that implements the IOleCommandTarget interface displays and enables your command. No hay código de la interfaz interceptado y ha actuado sobre él.No interface code intercepted it and acted on it.

  • Cuando un usuario hace clic en el comando, se convierte en sujeto al procedimiento que se describe en algoritmo de enrutamiento.When a user clicks your command, it becomes subject to the procedure that is outlined in Routing algorithm.

Llamar a comandos predefinidosCall pre-defined commands

El UsedCommands (elemento) habilita a VSPackages para acceder a los comandos que se proporcionan por otros VSPackages o por el IDE.The UsedCommands element enables VSPackages to access commands that are provided by other VSPackages or by the IDE. Para ello, cree un UsedCommand (elemento) que tiene el GUID y el identificador del comando que se va a usar.To do this, create a UsedCommand element that has the GUID and ID of the command to use. Esto garantiza que el comando se cargarán por Visual Studio, incluso si no es parte de la configuración actual de Visual Studio.This ensures that the command will be loaded by Visual Studio, even if it is not part of the current Visual Studio configuration. Para obtener más información, consulte UsedCommand (elemento).For more information, see UsedCommand element.

Apariencia del elemento de interfazInterface element appearance

Consideraciones para seleccionar y colocar elementos de comando son los siguientes:Considerations for selecting and positioning command elements are as follows:

  • Programa para la mejoraVisual Studio ofrece muchos elementos de interfaz de usuario que aparecen de manera diferente dependiendo de la selección de ubicación. offers many UI elements that appear differently depending on placement.

  • Un elemento de interfaz de usuario que se define utilizando el DefaultInvisible marca no se mostrará en el IDE a menos que se muestran en su implementación de VSPackage de la QueryStatus método, o asociados con un determinado contexto de interfaz de usuario en el VisibilityConstraints sección.A UI element that is defined by using the DefaultInvisible flag will not be displayed in the IDE unless it is either displayed by its VSPackage implementation of the QueryStatus method, or associated with a particular UI context in the VisibilityConstraints section.

  • No puede mostrarse incluso un comando colocado correctamente.Even a successfully positioned command may not be displayed. Esto es porque el IDE automáticamente oculta o muestra algunos comandos, dependiendo de las interfaces que el VSPackage tiene (o no) implementa.This is because the IDE automatically hides or displays some commands, depending on interfaces that the VSPackage has (or has not) implemented. Por ejemplo, la implementación de un VSPackage de algunos crear interfaces de elementos de menú relacionadas con la compilación de las causas que se mostrará automáticamente.For example, a VSPackage's implementation of some build interfaces causes build-related menu items to be automatically shown.

  • Aplicar el CommandWellOnly marca en la definición del elemento de interfaz de usuario significa que se puede agregar el comando sólo gracias a la personalización.Applying the CommandWellOnly flag in the definition of UI element means that the command can be added only by customization.

  • Los comandos pueden estar disponibles solo en determinados contextos de interfaz de usuario, por ejemplo, solo cuando se muestra un cuadro de diálogo cuando el IDE está en la vista Diseño.Commands may be available only in certain UI contexts, for example, only when a dialog box is displayed when the IDE is in design view.

  • Para hacer que algunos elementos de interfaz de usuario que se mostrará en el IDE, debe implementar uno o más interfaces o escribir algo de código.To cause certain UI elements to be displayed in the IDE, you must implement one or more interfaces or write some code.

Vea tambiénSee also

Extender los menús y comandosExtend menus and commands