Condividi tramite


procedura dettagliata: Aggiunta di un controller di menu a una barra degli strumenti

Compilazione di questa procedura dettagliata la procedura dettagliata e sull'Aggiunta di una barra degli strumenti a una finestra degli strumenti come aggiungere un controller di menu alla barra degli strumenti della finestra degli strumenti. I passaggi indicati di seguito possono inoltre essere applicati alla barra degli strumenti creata nella procedura dettagliata, Aggiunta di una barra degli strumenti all'IDE.

Un controller di menu è un controllo spaccati. Il lato sinistro del controller del menu visualizzato il comando utilizzato per ultimo e può essere eseguito facendo clic su. La destra del controller di menu viene visualizzata una freccia che, quando viene fatto clic, apre un elenco di comandi aggiuntivi. Quando si fa clic su un comando nell'elenco, il comando viene eseguito e sostituisce il comando sul lato sinistro del controller il menu. In questo modo, il controller di menu viene eseguito come un pulsante di comando che mostra sempre il comando utilizzato per ultimo in un elenco.

Controller del menu possono apparire sui menu ma sono più frequentemente per barre degli strumenti.

In questa procedura dettagliata viene illustrato un controller di menu che offre tre opzioni selezionate, definite nel file di .vsct. Per ulteriori informazioni sui menu e i file di .vsct, vedere Controlli, menu e barre degli strumenti.

Prerequisiti

Per completare questa procedura dettagliata, è necessario installare Visual Studio 2010 SDK.

Nota

per ulteriori informazioni su Visual Studio SDK, vedere Cenni preliminari sull'estensione di Visual Studio.Per ulteriori informazioni su come scaricare Visual Studio SDK, vedere Centro per sviluppatori di estensibilità di Visual Studio il sito Web MSDN.

Creare un controller del menu

Per creare un controller del menu

  1. Seguire le procedure descritte in procedura dettagliata: Aggiunta di una barra degli strumenti a una finestra degli strumenti per creare una finestra degli strumenti package VS che dispone di una barra degli strumenti.

  2. In Esplora soluzioni, fare doppio clic su TWToolbar.vsct per aprirlo in un editor di testo.

  3. Nella sezione di simboli , nell'elemento di GuidSymbol denominato “guidTWToolbarCmdSet„, dichiarare il controller di menu, il gruppo del controller menu e tre voci di menu.

    <IDSymbol name="TestMenuController" value="0x1300" />
    <IDSymbol name="TestMenuControllerGroup" value="0x1060" />
    <IDSymbol name="cmdidMCItem1" value="0x0130" />
    <IDSymbol name="cmdidMCItem2" value="0x0131" />
    <IDSymbol name="cmdidMCItem3" value="0x0132" />
    
  4. Nella sezione di menu , dopo l'ultima voce di menu, definire il controller del menu come menu.

    <Menu guid="guidTWToolbarCmdSet" id="TestMenuController" priority="0x0100" type="MenuController">
      <Parent guid="guidTWToolbarCmdSet" id="TWToolbarGroup" />
      <CommandFlag>IconAndText</CommandFlag>
      <CommandFlag>TextChanges</CommandFlag>
      <CommandFlag>TextIsAnchorCommand</CommandFlag>
      <Strings>
        <ButtonText>Test Menu Controller</ButtonText>
        <CommandName>Test Menu Controller</CommandName>
      </Strings>
    </Menu>
    

    I flag di TextIsAnchorCommand e di TextChanges devono essere importati per consentire al controller il menu per riflettere il comando select più recente.

  5. Nella sezione di gruppi , dopo l'ultima voce del gruppo, aggiungere il gruppo del controller menu.

    <Group guid="guidTWToolbarCmdSet" id="TestMenuControllerGroup" priority="0x000">
      <Parent guid="guidTWToolbarCmdSet" id="TestMenuController" />
    </Group>
    

    Impostando il controller del menu del padre, tutti i controlli posizionati in questo gruppo verranno visualizzati nel controller il menu. L'attributo di priority viene omesso, che viene impostata sul valore predefinito di 0, perché verrà unico gruppo nel controller il menu.

  6. Nella sezione di pulsanti , dopo l'ultima voce del pulsante, aggiungere un elemento di pulsante per ognuna delle voci di menu.

    <Button guid="guidTWToolbarCmdSet" id="cmdidMCItem1" priority="0x0000" type="Button">
      <Parent guid="guidTWToolbarCmdSet" id="TestMenuControllerGroup" />
      <Icon guid="guidImages" id="bmpPic1" />
      <CommandFlag>IconAndText</CommandFlag>
      <Strings>
        <ButtonText>MC Item 1</ButtonText>
        <CommandName>MC Item 1</CommandName>
      </Strings>
    </Button>
    <Button guid="guidTWToolbarCmdSet" id="cmdidMCItem2" priority="0x0100" type="Button">
      <Parent guid="guidTWToolbarCmdSet" id="TestMenuControllerGroup" />
      <Icon guid="guidImages" id="bmpPic2" />
      <CommandFlag>IconAndText</CommandFlag>
      <Strings>
        <ButtonText>MC Item 2</ButtonText>
        <CommandName>MC Item 2</CommandName>
      </Strings>
    </Button>
    <Button guid="guidTWToolbarCmdSet" id="cmdidMCItem3" priority="0x0200" type="Button">
      <Parent guid="guidTWToolbarCmdSet" id="TestMenuControllerGroup" />
      <Icon guid="guidImages" id="bmpPicSearch" />
      <CommandFlag>IconAndText</CommandFlag>
      <Strings>
        <ButtonText>MC Item 3</ButtonText>
        <CommandName>MC Item 3</CommandName>
      </Strings>
    </Button>
    
  7. A questo punto, è possibile esaminare il controller il menu.

    1. premere F5per aprire un'istanza di Visual Studiosperimentale.

    2. Scegliere dal menu di visualizzazione , il punto a altre finestrequindi fare clic su Finestra strumento di test.

    3. Il controller di menu viene visualizzata nella barra degli strumenti della finestra degli strumenti.

    4. Fare clic sulla scheda Bing.

    Si noti che quando si fa clic su un comando, la sinistra del controller del menu per visualizzare il comando. Nella sezione successiva, verrà aggiunto il codice per attivare tali controlli.

  8. chiudere Visual Studiosperimentale.

Implementare i controlli del controller menu

Per implementare i controlli del controller di menu nel codice gestito

  1. In Esplora soluzioni, fare doppio clic su PkgCmdID.cs per aprirlo in un editor di testo.

  2. Dopo che gli ID di comandi esistenti nel PkgCmdIDList classe, aggiungere gli ID di comando per le tre voci di menu.

    public const int cmdidMCItem1 = 0x130;
    public const int cmdidMCItem2 = 0x131;
    public const int cmdidMCItem3 = 0x132;
    
  3. in Esplora soluzioni, aprire TWToolbarPackage.cs.

  4. Nella parte superiore della classe di TWToolbarPackage, aggiungere le istruzioni seguenti:

    private int currentMCCommand; // The currently selected menu controller command
    
  5. Individuare l'area nascosta l'etichetta “membri del pacchetto„ e ampliarla facendo clic sul segno più () nel margine sinistro.

  6. Nel metodo di Initialize , subito dopo dell'ultima chiamata al metodo di AddCommand , aggiungere il codice per gestire gli eventi per ciascun comando tramite gli stessi gestori.

    for (int i = PkgCmdIDList.cmdidMCItem1; i <=
        PkgCmdIDList.cmdidMCItem3; i++)
    {
        CommandID cmdID = new
        CommandID(GuidList.guidTWToolbarCmdSet, i);
        OleMenuCommand mc = new OleMenuCommand(new
          EventHandler(OnMCItemClicked), cmdID);
        mc.BeforeQueryStatus += new EventHandler(OnMCItemQueryStatus);
        mcs.AddCommand(mc);
        // The first item is, by default, checked. 
        if (PkgCmdIDList.cmdidMCItem1 == i)
        {
            mc.Checked = true;
            this.currentMCCommand = i;
        }
    }
    
  7. Alla fine della classe di TWToolbarPackage , subito dopo il metodo di MenuItemCallback , aggiungere un metodo per contrassegnare il comando select come controllato.

    private void OnMCItemQueryStatus(object sender, EventArgs e)
    {
        OleMenuCommand mc = sender as OleMenuCommand;
        if (null != mc)
        {
            mc.Checked = (mc.CommandID.ID == this.currentMCCommand);
        }
    }
    
  8. Dopo il metodo di OnMCItemQueryStatus , aggiungere un gestore eventi per quando l'utente seleziona un comando al controller di menu:

    private void OnMCItemClicked(object sender, EventArgs e)
    {
        OleMenuCommand mc = sender as OleMenuCommand;
        if (null != mc)
        {
            string selection;
            switch (mc.CommandID.ID)
            {
                case PkgCmdIDList.cmdidMCItem1:
                    selection = "Menu controller Item 1";
                    break;
    
                case PkgCmdIDList.cmdidMCItem2:
                    selection = "Menu controller Item 2";
                    break;
    
                case PkgCmdIDList.cmdidMCItem3:
                    selection = "Menu controller Item 3";
                    break;
    
                default:
                    selection = "Unknown command";
                    break;
            }
            this.currentMCCommand = mc.CommandID.ID;
    
            IVsUIShell uiShell =
              (IVsUIShell)GetService(typeof(SVsUIShell));
            Guid clsid = Guid.Empty;
            int result;
            uiShell.ShowMessageBox(
                       0,
                       ref clsid,
                       "Test Tool Window Toolbar Package",
                       string.Format(CultureInfo.CurrentCulture,
                                     "You selected {0}", selection),
                       string.Empty,
                       0,
                       OLEMSGBUTTON.OLEMSGBUTTON_OK,
                       OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST,
                       OLEMSGICON.OLEMSGICON_INFO,
                       0,
                       out result);
        }
    }
    
  9. Compilare la soluzione e correggere tutti gli errori che si verificano.

Test del controller del menu

Per testare il controller del menu

  1. premere F5 per aprire un'istanza di Visual Studiosperimentale.

  2. aprire Finestra strumento di test.

    Il controller di menu viene visualizzato nella barra degli strumenti della finestra degli strumenti e nell'elemento 1 " di MC visualizza “.

  3. Fare clic sul pulsante del controller menu a sinistra della freccia.

    Una finestra di dialogo viene visualizzata elemento selezionato 1 " controller del menu del messaggio “. Si noti che il messaggio corrisponde al testo sul pulsante del controller menu.

  4. Fare clic sulla freccia nel controller il menu per visualizzare tre elementi, il primo dei quali è selezionato e include una casella di evidenziazione intorno alla relativa icona. Scegliere elemento 3 di MC.

    Una finestra di dialogo viene visualizzata elemento selezionato 3 " controller del menu del messaggio “. Il pulsante del controller menu verrà visualizzato “l'elemento 3 " di MC.

  5. Fare clic sulla freccia nel controller il menu per visualizzare le opzioni. Si noti che la nuova impostazione predefinita, elemento 3 di MC, ora è selezionata.

Vedere anche

Attività

procedura dettagliata: Aggiunta di una barra degli strumenti a una finestra degli strumenti

procedura dettagliata: Aggiunta di una barra degli strumenti all'IDE

Altre risorse

Procedure dettagliate per i controlli, i menu e le barre degli strumenti

Controlli, menu e barre degli strumenti