Condividi tramite


Creare gruppi riutilizzabili di pulsanti

Un gruppo di comandi è una raccolta di comandi che vengono sempre visualizzati insieme in un menu o in una barra degli strumenti. Qualsiasi gruppo di comandi può essere riutilizzato assegnandolo a menu padre diversi nella sezione CommandPlacements del file vsct .

I gruppi di comandi in genere contengono pulsanti, ma possono contenere anche altri menu o caselle combinate.

Per creare un gruppo riutilizzabile di pulsanti

  1. Creare un progetto VSIX denominato ReusableButtons. Per altre informazioni, vedere Creare un'estensione con un comando di menu.

  2. Quando si apre il progetto, aggiungere un modello di elemento di comando personalizzato denominato ReusableCommand. Nella Esplora soluzioni fare clic con il pulsante destro del mouse sul nodo del progetto e scegliere Aggiungi>nuovo elemento. Nella finestra di dialogo Aggiungi nuovo elemento passare a Visual C#>Estendibilità e selezionare Comando personalizzato. Nel campo Nome nella parte inferiore della finestra modificare il nome del file di comando in ReusableCommand.cs.

  3. Nel file con estensione vsct passare alla sezione Symbols e trovare l'elemento GuidSymbol che contiene gruppi e comandi per il progetto. Deve essere denominato guidReusableCommandPackageCmdSet.

  4. Aggiungere un IDSymbol per ogni pulsante che verrà aggiunto al gruppo, come nell'esempio seguente.

    <GuidSymbol name="guidReusableCommandPackageCmdSet" value="{7f383b2a-c6b9-4c1d-b4b8-a26dc5b60ca1}">
        <IDSymbol name="MyMenuGroup" value="0x1020" />
        <IDSymbol name="ReusableCommandId" value="0x0100" />
        <IDSymbol name="SecondReusableCommandId" value="0x0200" />
    </GuidSymbol>
    

    Per impostazione predefinita, il modello di elemento di comando crea un gruppo denominato MyMenuGroup e un pulsante con il nome specificato, insieme a una voce IDSymbol per ognuna.

  5. Nella sezione Gruppi creare un elemento Group con gli stessi attributi GUID e ID specificati nella sezione Simboli. È anche possibile usare un gruppo esistente o usare la voce fornita dal modello di comando, come nell'esempio seguente. Questo gruppo viene visualizzato nel menu Strumenti

    <Groups>
        <Group guid="guidReusableCommandPackageCmdSet" id="MyMenuGroup" priority="0x0600">
              <Parent guid="guidSHLMainMenu" id="IDM_VS_MENU_TOOLS"/>
        </Group>
    </Groups>
    

Per creare un gruppo di pulsanti per il riutilizzo

  1. È possibile inserire un comando o un menu in un gruppo usando il gruppo come elemento padre nella definizione del comando o del menu oppure inserendo il comando o il menu nel gruppo usando la sezione CommandPlacements.

    Nella sezione Pulsanti definire un pulsante con il gruppo come padre oppure usare il pulsante fornito dal modello di pacchetto, come illustrato nell'esempio seguente.

    <Button guid="guidReusableCommandPackageCmdSet" id="ReusableCommandId" priority="0x0100" type="Button">
        <Parent guid="guidReusableCommandPackageCmdSet" id="MyMenuGroup" />
        <Icon guid="guidImages" id="bmpPic1" />
        <Strings>
            <ButtonText>Invoke ReusableCommand</ButtonText>
        </Strings>
    </Button>
    
  2. Se un pulsante deve essere visualizzato in più gruppi, creare una voce per essa nella sezione CommandPlacements, che deve essere inserita dopo la sezione Comandi. Impostare gli attributi GUID e ID dell'elemento CommandPlacement in modo che corrispondano a quelli del pulsante da posizionare e quindi impostare il GUID e l'ID del relativo elemento Parent su quelli del gruppo di destinazione, come illustrato nell'esempio seguente.

    <CommandPlacements>
        <CommandPlacement guid="guidReusableCommandPackageCmdSet" id="SecondReusableCommandId" priority="0x105">
          <Parent guid="guidReusableCommandPackageCmdSet" id="MyMenuGroup" />
        </CommandPlacement>
    </CommandPlacements>
    

    Nota

    Il valore del campo Priorità determina la posizione del comando nel nuovo gruppo di comandi. Le priorità impostate nell'elemento CommandPlacement sostituiscono quelle impostate nella definizione dell'elemento. I comandi con valori di priorità inferiore vengono visualizzati prima dei comandi con valori di priorità più elevati. Sono consentiti valori di priorità duplicati, ma la posizione relativa dei comandi con lo stesso valore di priorità non può essere garantita perché l'ordine in cui il comando devenv /setup crea l'interfaccia finale dal Registro di sistema potrebbe non essere coerente.

Per inserire un gruppo riutilizzabile di pulsanti in un menu

  1. Creare una voce nella CommandPlacements sezione . Impostare il GUID e l'ID dell'elemento CommandPlacement su quelli del gruppo e impostare il GUID padre e l'ID su quelli della posizione di destinazione.

    La sezione CommandPlacements deve essere posizionata subito dopo la sezione Comandi:

    <CommandTable>
    ...
      <Commands>... </Commands>
      <CommandPlacements>... </CommandPlacements>
    ...
    </CommandTable>
    

    Un gruppo di comandi può essere incluso in più menu. Il menu padre può essere uno creato, uno fornito da Visual Studio (come descritto in ShellCmdDef.vsct o SharedCmdDef.vsct) o uno definito in un altro VSPackage. Il numero di livelli padre è illimitato, purché il menu padre sia connesso a Visual Studio o a un menu di scelta rapida visualizzato da un pacchetto VSPackage.

    L'esempio seguente inserisce il gruppo sulla barra degli strumenti Esplora soluzioni, a destra degli altri pulsanti.

    <CommandPlacements>
        <CommandPlacement guid="guidReusableCommandPackageCmdSet" id="MyMenuGroup" priority="0xF00">
          <Parent guid="guidSHLMainMenu" id="IDM_VS_TOOL_PROJWIN"/>
        </CommandPlacement>
    </CommandPlacements>
    
    <CommandPlacements>
      <CommandPlacement guid="guidButtonGroupCmdSet" id="MyMenuGroup"
          priority="0x605">
        <Parent guid="guidSHLMainMenu" id="IDM_VS_MENU_TOOLS" />
      </CommandPlacement>
    </CommandPlacements>