procedura dettagliata: Aggiunta di un elenco utilizzati di recente in un sottomenu
Compilazione di questa procedura dettagliata sulle dimostrazioni in procedura dettagliata: Aggiunta di un sottomenu a un menue viene illustrato come aggiungere un elenco dinamico a un sottomenu. I form di elenco dinamici la base per creare un elenco (MRU) utilizzato più di recente.
Un elenco dinamico del menu inizia con un segnaposto in un menu. Ogni volta che il menu viene visualizzato, l'ambiente di sviluppo integrato di (IDE) Visual Studio richiede il package VS tutti i controlli che devono essere visualizzati al segnaposto. Un elenco dinamico può verificarsi in qualsiasi punto in un menu. Tuttavia, gli elenchi dinamici in genere vengono archiviati e visualizzati da soli sui sottomenu o ai soldi dei menu. Tramite questi modelli di progettazione, attivare l'elenco dinamico dei comandi espandere e contrarrti senza influire sulla posizione di altri comandi del menu. In questa procedura dettagliata, l'elenco dinamico utilizzati di recente vengono visualizzati nella parte inferiore di un sottomenu esistente, separato dal resto del menu secondario da una linea.
Tecnicamente, un elenco dinamico anche possibile applicare a una barra degli strumenti. Tuttavia, scoraggiamo che utilizzano perché una barra degli strumenti deve rimanere invariata a meno che l'utente intraprenda le azioni specifiche per modificarlo.
In questa procedura dettagliata viene creato un elenco utilizzati di recente di quattro elementi che modificano ogni volta che il relativo ordine che uno di essi è selezionato (l'elemento selezionato si sposta all'inizio dell'elenco).
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.
Posizioni del modello di progetto del pacchetto Visual Studio
Il modello di progetto del pacchetto Visual Studio è disponibile in tre percorsi nella finestra di dialogo di nuovo progetto :
In Estensibilità di Visual Basic. La lingua predefinita del progetto di Visual Basic.
In Estensibilità di C#. La lingua predefinita del progetto è c#.
In L'altra estensibilità dei tipi di progetto. La lingua predefinita del progetto è C++.
Creare un package VS
Per creare il TopLevelMenu VSPackage
- Seguire le procedure procedura dettagliata: Aggiunta di un sottomenu a un menu descritte in per creare il sottomenu che viene modificato nelle procedure riportate di seguito.
Le procedure descritte in questa procedura dettagliata si presuppone che il nome del pacchetto VS sia TopLevelMenu, che rappresenta il nome utilizzato in procedura dettagliata: Aggiunta di un menu alla barra dei menu di Visual Studio (c#).
Creare un comando dinamico dell'elenco di elementi
Per creare un comando dinamico dell'elenco di elementi
aprire TopLevelMenu.vsct.
Nella sezione di Symbols , nel nodo di GuidSymbol denominato guidTopLevelMenuCmdSet, aggiungere il simbolo dal gruppo di MRUListGroup e il comando di cmdidMRUList , come illustrato di seguito.
Nella sezione di Groups , aggiungere il gruppo dichiarato dopo le voci del gruppo esistente.
Nella sezione di Buttons , aggiungere un nodo per rappresentare il comando appena dichiarato, dopo le voci esistenti del pulsante.
<Button guid="guidTopLevelMenuCmdSet" id="cmdidMRUList" type="Button" priority="0x0100"> <Parent guid="guidTopLevelMenuCmdSet" id="MRUListGroup" /> <CommandFlag>DynamicItemStart</CommandFlag> <Strings> <CommandName>cmdidMRUList</CommandName> <ButtonText>MRU Placeholder</ButtonText> </Strings> </Button>
Il flag di DynamicItemStart abilita il comando essere generato in modo dinamico.
Scegliere dal menu di Compilazione ,fare clic su Soluzione di compilazione.
Utilizzando questo ricompila il file di .vsct con le modifiche. correggere tutti gli errori che possono verificarsi durante la compilazione.
Premere F5 per esaminare la visualizzazione del nuovo comando.
Scegliere dal menu di TestMenu , fare clic sul nuovo menu, sottomenu, per visualizzare il nuovo comando, Segnaposto utilizzati di recente. Dopo che un progetto verrà aggiunto al controllo del codice sorgente, è possibile eseguire eventuali azioni di controllo del codice sorgente (estrarre, ottenere, e così via).
Nota
È necessario chiudere Visual Studio sperimentale prima di continuare alla sezione successiva.
Compilazione degli elenchi utilizzati di recente
Per riempire l'usato di recente nell'elenco tramite codice gestito
Aprire PkgCmdID.cs o PkgCmdID.vb nell'editor di codice.
Aggiungere l'ID di comando dopo gli ID controlli esistenti nella definizione della classe di PkgCmdIDList .
public const uint cmdidMRUList = 0x200;
Aprire TopLevelMenuPackage.cs o TopLevelMenuPackage.vb nell'editor di codice.
Inizio del file, all'elenco di istruzioni using, aggiungere la seguente istruzione.
using System.Collections;
Individuare il metodo di Initialize . È possibile dover cercare l'area nascosta l'etichetta “membri del pacchetto„ e ampliarla. Il metodo di Initialize è in quest'area nascosta.
Al metodo di Initialize , aggiungere la riga seguente immediatamente dopo l'ultima chiamata al metodo di AddCommand . InitMRUMenu sarà definito solo dopo il passaggio 8.
this.InitMRUMenu(mcs);
Alla fine della classe di MyTopLevelMenuPackage , aggiungere il seguente codice immediatamente dopo il metodo di SubItemCallback . Questo codice inizializza l'elenco di stringhe che rappresentano elementi da visualizzare nell'elenco utilizzati di recente.
private int numMRUItems = 4; private int baseMRUID = (int)PkgCmdIDList.cmdidMRUList; private ArrayList mruList; private void InitializeMRUList() { if (null == this.mruList) { this.mruList = new ArrayList(); if (null != this.mruList) { for (int i = 0; i < this.numMRUItems; i++) { this.mruList.Add(string.Format(CultureInfo.CurrentCulture, "Item {0}", i + 1)); } } } }
dopo il metodo di InitializeMRUList , aggiungere il seguente metodo di InitMRUMenu . Ciò consente di inizializzare i comandi di menu elenchi utilizzati di recente.
private void InitMRUMenu(OleMenuCommandService mcs) { InitializeMRUList(); for (int i = 0; i < this.numMRUItems; i++) { var cmdID = new CommandID( GuidList.guidTopLevelMenuCmdSet, this.baseMRUID + i); var mc = new OleMenuCommand( new EventHandler(OnMRUExec), cmdID); mc.BeforeQueryStatus += new EventHandler(OnMRUQueryStatus); mcs.AddCommand(mc); } }
Nel codice gestito, è necessario creare un oggetto del comando di menu per ogni elemento possibile nell'elenco utilizzati di recente. L'ide chiama il metodo di OnMRUQueryStatus per ogni elemento nell'elenco utilizzati di recente fino a quando non vi sono più elementi. Nel codice gestito, l'unico modo per l'ide sa che non sono presenti altri elementi consiste nella creazione di tutti gli elementi possibili per primo. Se lo si desidera, è possibile contrassegnare inizialmente gli elementi aggiuntivi quali non visibili utilizzando mc.Visible = false; dopo il comando di menu viene creato. Questi elementi possono quindi essere rendere visibili in un secondo momento utilizzando mc.Visible = true; nel metodo di OnMRUQueryStatus .
dopo il metodo di InitMRUMenu , aggiungere il seguente metodo di OnMRUQueryStatus . Si tratta del gestore per impostare il testo per ogni elemento utilizzati di recente.
private void OnMRUQueryStatus(object sender, EventArgs e) { OleMenuCommand menuCommand = sender as OleMenuCommand; if (null != menuCommand) { int MRUItemIndex = menuCommand.CommandID.ID - this.baseMRUID; if (MRUItemIndex >= 0 && MRUItemIndex < this.mruList.Count) { menuCommand.Text = this.mruList[MRUItemIndex] as string; } } }
dopo il metodo di OnMRUQueryStatus , aggiungere il seguente metodo di OnMRUExec . Si tratta del gestore per selezionare un elemento utilizzati di recente. Questo metodo sposta l'elemento selezionato nella parte superiore dell'elenco e visualizzare l'elemento selezionato in una finestra di messaggio.
private void OnMRUExec(object sender, EventArgs e) { var menuCommand = sender as OleMenuCommand; if (null != menuCommand) { int MRUItemIndex = menuCommand.CommandID.ID - this.baseMRUID; if (MRUItemIndex >= 0 && MRUItemIndex < this.mruList.Count) { string selection = this.mruList[MRUItemIndex] as string; for (int i = MRUItemIndex; i > 0; i--) { this.mruList[i] = this.mruList[i - 1]; } this.mruList[0] = selection; System.Windows.Forms.MessageBox.Show( string.Format(CultureInfo.CurrentCulture, "Selected {0}", selection)); } } }
Scegliere Compila soluzione dal menu Compila per compilare la soluzione. correggere tutti gli errori che possono verificarsi.
Testare l'elenco utilizzati di recente
Per eseguire il test dell'elenco del menu utilizzati di recente
Premere F5 per esaminare la visualizzazione del nuovo comando.
Scegliere dal menu di TestMenu , fare clic su Comando di test. Questo scopo viene visualizzata una finestra di messaggio che indica che il comando è stato selezionato.
Nota
Questo passaggio è necessario forzare il package VS per caricare e visualizzare correttamente l'elenco utilizzati di recente.Se si ignora questo passaggio, l'elenco utilizzati di recente non vengono visualizzati.
Scegliere dal menu di Per eseguire il test del menu , fare clic su sottomenu. Un elenco di quattro elementi verranno visualizzati alla fine del menu secondario, in un separatore. Quando si fa clic su elemento 3, una finestra di messaggio deve essere visualizzato e visualizza il testo, “elemento selezionato 3 ". (Se l'elenco di quattro elementi non vengono visualizzati, assicurarsi che sono state seguite le istruzioni al passaggio precedente.)
Aprire nuovamente il sottomenu. Si noti che elemento 3 è ora parte superiore dell'elenco e gli altri elementi sono stati spinti un percorso. Fare nuovamente clic su elemento 3 e notare che verrà visualizzata la finestra di messaggio ancora “hanno selezionato l'elemento 3 ", che indica che il testo sia viene passato alla nuova posizione insieme all'etichetta del comando.
Vedere anche
Attività
Procedura: Aggiungere dinamicamente voci di menu
Altre risorse
Procedure dettagliate per i controlli, i menu e le barre degli strumenti