Comment : lier une commande à plusieurs combinaisons de touches de raccourci

Mise à jour : novembre 2007

Plutôt que de lier une combinaison de touches de raccourci unique à une commande, vous pouvez lui en associer plusieurs. Par exemple, ce procédé peut s'avérer utile lorsque deux utilisateurs qui travaillent sur un projet commun préfèrent des touches de raccourci différentes pour exécuter la même commande. Pour ce faire, passez les touches de raccourci en tant qu'éléments de chaîne dans un tableau de type Object.

Remarque :

Les boîtes de dialogue et les commandes de menu que vous voyez peuvent différer de ce qui est décrit dans l'aide selon vos paramètres actifs ou votre édition. Ces procédures ont été développées avec les paramètres de développement généraux actifs. Pour modifier vos paramètres, sélectionnez Importer et ExporterParamètres dans le menu Outils. Pour plus d'informations, consultez Paramètres Visual Studio.

Pour lier une commande à plusieurs touches de raccourci

  1. Utilisez l'Assistant Complément de 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.

  2. 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.

  3. Collez la fonction d'exemple ci-dessous dans la classe Connect du code générée par l'Assistant Complément de Visual Studio.

  4. Pour créer une copie des paramètres de clavier par défaut, naviguez jusqu'au répertoire C:\Program Files\Microsoft Visual Studio 8\Common7\IDE.

  5. Cliquez avec le bouton droit sur l'un des fichiers vsk, puis sélectionnez Copier dans le menu contextuel.

  6. Collez la copie dans le même dossier.

    La copie est nommée « Copie de <nom_du_fichier_vsk> ».

  7. Renommez le fichier copié.

  8. Pour vérifier que le nouveau fichier vsk apparaît dans la liste des configurations du clavier, cliquez sur Options dans le menu Outils de Visual Studio.

  9. Dans le volet de gauche de la boîte de dialogue Options, développez le dossier Environnement puis sélectionnez Clavier.

    Assurez-vous que le nom du fichier vsk renommé à l'étape 7 s'affiche dans le menu déroulant Appliquer cet autre schéma de configuration du clavier.

  10. Avant d'exécuter l'exemple de complément, assurez-vous que la configuration du clavier est (Par défaut). Pour ce faire, cliquez sur Réinitialiser dans le volet Clavier de la boîte de dialogue Options.

  11. À l'étape prop.Value = "< Filename.vsk>" de l'exemple du complément, remplacez <Filename.vsk> par le nom du nouveau schéma de clavier spécifié à l'étape 7.

  12. Appelez la fonction depuis la méthode OnConnection conformément à la description de Comment : compiler et exécuter les exemples de code du modèle objet Automation.

  13. Générez le complément.

  14. 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 est liée à deux touches de raccourci différentes. Appuyez sur CTRL+MAJ+ALT+Y ou sur CTRL+MAJ+ALT+X pour afficher la boîte de dialogue Nouveau fichier.

Exemple

L'exemple suivant remplace la combinaison de touches existante par les deux nouvelles.

Public Sub OnConnection(ByVal application As Object, ByVal _
connectMode As ext_ConnectMode, ByVal addInInst As Object, _
ByRef custom As Array) Implements IDTExtensibility2.OnConnection
    _applicationObject = CType(application, DTE2)
    _addInInstance = CType(addInInst, AddIn)
    BindSingle(_applicationObject)
End Sub
Sub BindSingle(ByVal dte As DTE2)
    ' Adds two new keybindings to a command.
    Dim cmds As Commands
    Dim cmd As Command
    Dim props As EnvDTE.Properties = DTE.Properties("Environment", _"Keyboard")
    Dim prop As EnvDTE.Property
    Dim bindings(1) As Object

    ' Make a writeable copy of the default keymapping scheme.
    prop = props.Item("SchemeName")
    prop.Value = "<FileName.vsk>"
    ' Assign the two shortcut key combinations, CTRL+SHIFT+ALT+Y and 
    ' CTRL+SHIFT+ALT+X, to the two bindings array elements. 
    bindings(0) = "Global:: CTRL+SHIFT+ALT+Y"
    bindings(1) = "Global:: CTRL+SHIFT+ALT+X"
    ' Set references to the Commands collection and the File.NewFile
    ' command.
    cmds = DTE.Commands
    cmd = cmds.Item("File.NewFile")
    ' Assign the contents of the bindings array to the Bindings 
    ' property.
    cmd.Bindings = bindings
End Sub
public void OnConnection(object application,
 ext_ConnectMode connectMode, object addInInst, ref Array custom)
{
    _applicationObject = (DTE2)application;
    _addInInstance = (AddIn)addInInst;
    // Pass the applicationObject member variable to the code example.
    BindMultiple(_applicationObject ); 
}

public void BindMultiple( DTE2 dte ) 
{ 
    // Adds two new keybindings to a command.
    Commands cmds = null; 
    Command cmd = null; 
    EnvDTE.Properties props = dte.get_Properties( "Environment",
 "Keyboard"); 
    EnvDTE.Property prop = null; 
    Object[] bindings = new Object[ 2 ]; 

    // Make a writeable copy of the default keymapping scheme.
    prop = props.Item( "SchemeName" ); 
    prop.Value = "<FileName.vsk>"; 
    // Assign the two shortcut key combinations, CTRL+SHIFT+ALT+Y and 
    // CTRL+SHIFT+ALT+X, to the two bindings array elements. 
    bindings[ 0 ] = "Global:: CTRL+SHIFT+ALT+Y"; 
    bindings[ 1 ] = "Global:: CTRL+SHIFT+ALT+X"; 
    // Set references to the Commands collection and the File.NewFile
    // command.
    cmds = dte.Commands; 
    cmd = cmds.Item( "File.NewFile", -1 ); 
    // 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 : conserver les combinaisons de touches de commande existantes

Concepts

Format de paramètre de la propriété Bindings

Autres ressources

Association de touches à des commandes de complément