Procedura: mantenere i tasti di scelta rapida esistenti
In genere, quando si modifica il comando di un tasto di scelta rapida, il collegamento esistente viene perso.Nell'esempio seguente viene illustrato come associare due nuovi tasti di scelta rapida a un comando e mantenere quelli esistenti.
Per visualizzare un elenco di comandi e di relativi tasti di scelta rapida correnti, eseguire l'esempio ListKeyBindings come illustrato nell'argomento Procedura: visualizzare tasti di scelta rapida esistenti.
[!NOTA]
È possibile che le finestre di dialogo e i comandi di menu visualizzati siano diversi da quelli descritti nella Guida a seconda delle impostazioni attive o dell'edizione del programma.Queste procedure sono state sviluppate con le Impostazioni generali per lo sviluppo attive.Per modificare le impostazioni, scegliere Importa/Esportaimpostazioni dal menu Strumenti.Per ulteriori informazioni, vedere Impostazioni di Visual Studio.
Per aggiungere nuovi tasti di scelta rapida e mantenere quelli esistenti
Utilizzare Creazione guidata componente aggiuntivo di Visual Studio per creare un componente aggiuntivo.Denominare il progetto e scegliere OK per avviare la procedura guidata.
Per ulteriori informazioni sull'utilizzo della Creazione guidata componente aggiuntivo di Visual Studio, vedere Procedura: creare un componente aggiuntivo.
Nella pagina Selezionare un linguaggio di programmazione selezionare Crea componente aggiuntivo utilizzando Visual C# per eseguire l'esempio di Visual C# riportato di seguito oppure Crea componente aggiuntivo utilizzando Visual Basic per eseguire l'esempio di Visual Basic.
Incollare la funzione dell'esempio (illustrata successivamente in questo argomento) nella classe Connect del codice generato dalla Creazione guidata componente aggiuntivo di Visual Studio.
Per creare una copia delle impostazioni predefinite della tastiera, accedere a C:\Programmi\Microsoft Visual Studio 10\Common7\IDE.
Fare clic con il pulsante destro del mouse su uno dei due file con estensione vsk e scegliere Copia.
Incollare la copia nella stessa cartella, quindi rinominarla.
Per verificare che il nuovo file con estensione vsk venga visualizzato nell'elenco dei tasti di scelta rapida, in Visual Studio scegliere Opzioni dal menu Strumenti.
Nel riquadro sinistro della finestra di dialogo Opzioni espandere la cartella Ambiente e selezionare Tastiera.
Assicurarsi che il nome del file con estensione vsk specificato in precedenza venga visualizzato nell'elenco Applica il seguente schema aggiuntivo di mappatura della tastiera.
Prima di eseguire l'esempio del componente aggiuntivo, verificare che i tasti di scelta rapida siano impostati su (Predefinito).Questa operazione può essere eseguita selezionando Reimposta nel riquadro Tastiera della finestra di dialogo Opzioni.
Nel passaggio prop.Value = "<Filename.vsk>" dell'esempio del componente aggiuntivo sostituire <Filename.vsk> con il nome del file con estensione vsk specificato in precedenza.
Chiamare la funzione dal metodo OnConnection, come illustrato in Procedura: compilare ed eseguire gli esempi di codice del modello a oggetti di automazione.
Compilare il componente aggiuntivo.
Per eseguire il componente aggiuntivo, scegliere Gestione componenti aggiuntivi dal menu Strumenti, selezionare il componente aggiuntivo creato, quindi scegliere OK.
Il comando File.NewFile viene associato ai nuovi tasti di scelta rapida, CTRL+ALT+MAIUSC+Y e CTRL+ALT+MAIUSC+U, nonché ai collegamenti originali.
Esempio
Nell'esempio di componente aggiuntivo seguente viene illustrato come associare due nuovi tasti di scelta rapida a un comando e mantenere quelli esistenti.
Sub PreserveBindings()
' Adds two new key bindings while preserving the existing ones.
Dim cmds As Commands
Dim cmd As Command
Dim props As EnvDTE.Properties = DTE.Properties("Environment", _
"Keyboard")
Dim prop As EnvDTE.Property
Dim bindings() As Object
Dim bindingNumber As Integer
' Set references to the Commands collection and the File.NewFile
' command.
cmds = DTE.Commands
cmd = cmds.Item("File.NewFile")
' Make a writeable copy of the default keymapping scheme.
prop = props.Item("SchemeName")
prop.Value = "<FileName.vsk>"
' Retrieve the current bindings for the command.
bindings = cmd.Bindings
' Get the number of bindings for the command.
bindingNumber = bindings.Length
' Add two more elements to the array to accomodate two
' new commands.
ReDim Preserve bindings(bindingNumber + 1)
' Add the new bindings to the existing ones in the array.
bindings(bindingNumber) = "Global::CTRL+ALT+SHIFT+Y"
bindings(bindingNumber + 1) = "Global::CTRL+ALT+SHIFT+U"
' Assign the contents of the bindings array to the Bindings
' property.
cmd.Bindings = bindings
End Sub
public void OnConnection(object application,
Extensibility.ext_ConnectMode connectMode, object addInInst, ref
System.Array custom)
{
_applicationObject = (DTE2)application;
_addInInstance = (AddIn)addInInst;
// Pass the applicationObject member variable to the code example.
PreserveBindings((_applicationObject);
}
// Add-in example for TextSelection.FindPattern.
// Also shows usage of these methods and properties:
// TextSelection.SelectLine
public void PreserveBindings( DTE dte )
{
// Adds two new key bindings while preserving the existing ones.
Commands cmds = null;
Command cmd = null;
EnvDTE.Properties props = dte.get_Properties( "Environment",
"Keyboard");
EnvDTE.Property prop = null;
Object[] bindings = null;
int bindingNumber = 0;
// Set references to the Commands collection and the File.NewFile
// command.
cmds = dte.Commands;
cmd = cmds.Item( "File.NewFile", -1 );
// Make a writeable copy of the default keymapping scheme.
prop = props.Item( "SchemeName" );
prop.Value = "<FileName.vsk>";
// Retrieve the current bindings for the command.
bindings = ( ( System.Object[] )( cmd.Bindings ) );
// Get the number of bindings for the command.
bindingNumber = bindings.Length;
// Add two more elements to the array to accomodate two
// new commands.
// Create temp variable for copying values.
// Arrays are zero-based in C#.
object[] temp = new object[ bindingNumber + 2 ];
System.Array.Copy( bindings, temp, Math.Min( bindings.Length,
temp.Length ) );
bindings = temp;
// Add the new bindings to the existing ones in the array.
bindings[ bindingNumber ] = "Global::CTRL+ALT+SHIFT+Y";
bindings[ bindingNumber+1 ] = "Global::CTRL+ALT+SHIFT+U";
// Assign the contents of the bindings array to the Bindings
// property.
cmd.Bindings = bindings;
}
Vedere anche
Attività
Procedura: associare un comando a un unico tasto di scelta rapida
Procedura: associare un comando a più tasti di scelta rapida
Concetti
Formato dei parametri della proprietà Bindings
Altre risorse
Associazione dei comandi dei componenti aggiuntivi a un tasto