Comment : conserver les raccourcis clavier existants
En règle générale, lorsque vous modifiez le raccourci clavier d'une commande, le raccourci existant est perdu.L'exemple suivant montre comment lier deux nouveaux raccourcis à une commande tout en conservant ceux qui existaient déjà.
Si vous souhaitez consulter une liste de commandes avec leurs raccourcis actuels, exécutez l'exemple ListKeyBindings tel qu'il est présenté dans Comment : afficher les combinaisons de touches existantes.
[!REMARQUE]
Les boîtes de dialogue et les commandes de menu qui s'affichent peuvent être différentes de celles qui sont décrites dans l'aide, en fonction de vos paramètres actifs ou de l'édition utilisée.Ces procédures ont été développées avec les paramètres de développement généraux actifs.Pour modifier vos paramètres, cliquez dans le menu Outils sur Importation et exportationde paramètres.Pour plus d'informations, consultez Paramètres Visual Studio.
Pour ajouter de nouveaux raccourcis clavier et conserver ceux déjà existants
Utilisez l'Assistant Complément Visual Studio pour créer un complément.Nommez le projet, puis cliquez sur OK pour démarrer l'Assistant.
Pour plus d'informations sur l'utilisation de l'Assistant Complément Visual Studio, consultez Comment : créer un complément.
Dans la page Sélectionner un langage de programmation, sélectionnez Créer un complément à l'aide de Visual C# pour exécuter l'exemple Visual C# ci-dessous ou Créer un complément à l'aide de Visual Basic pour exécuter l'exemple Visual Basic.
Collez l'exemple de fonction (présenté ultérieurement dans cette rubrique) dans la classe Connect du code généré par l'Assistant Complément Visual Studio.
Pour créer une copie des paramètres de clavier par défaut, accédez à C:\Program Files\Microsoft Visual Studio 10\Common7\IDE\.
Cliquez avec le bouton droit sur l'un des fichiers .vsk, puis cliquez sur Copier.
Collez la copie dans le même dossier, puis renommez-la.
Pour vérifier que le nouveau fichier .vsk apparaît dans la liste des raccourcis clavier, cliquez dans le menu Outils de Visual Studio sur Options.
Dans le volet de gauche de la boîte de dialogue Options, développez le dossier Environnement puis sélectionnez Clavier.
Vérifiez que le nom du fichier .vsk spécifié antérieurement apparaît dans la liste Appliquer cet autre schéma de configuration du clavier.
Avant d'exécuter l'exemple de complément, vérifiez que les raccourcis clavier ont la valeur (Par défaut).Pour ce faire, cliquez sur Réinitialiser dans le volet Clavier de la boîte de dialogue Options.
À l'étape prop.Value = "<Filename.vsk>" de l'exemple de complément, remplacez <Filename.vsk> par le nom du fichier .vsk spécifié antérieurement.
Appelez la fonction à partir de la méthode OnConnection, comme indiqué dans Comment : compiler et exécuter les exemples de code du modèle objet Automation.
Générez le complément.
Pour exécuter le complément, cliquez sur Gestionnaire de compléments dans le menu Outils, sélectionnez le complément que vous avez créé, puis cliquez sur OK.
La commande File.NewFile est liée aux nouveaux raccourcis clavier, CTRL+ALT+MAJ+Y et CTRL+ALT+MAJ+U, ainsi qu'aux raccourcis d'origine.
Exemple
L'exemple de complément suivant montre comment lier deux nouveaux raccourcis clavier à une commande, tout en conservant ceux qui existaient déjà.
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;
}
Voir aussi
Tâches
Comment : lier une commande à une touche de raccourci unique
Comment : lier une commande à plusieurs raccourcis clavier
Concepts
Format de paramètre de la propriété Bindings