Gewusst wie: Beibehalten vorhandener Tastenkombinationen

Add-Ins für Visual Studio sind in Visual Studio 2013 veraltet. Sie müssen für Ihre Add-Ins ein Upgrade auf VSPackage-Erweiterungen durchführen. Weitere Informationen über das Durchführen eines Upgrades finden Sie unter FAQ: Konvertieren von Add-Ins in VSPackage-Erweiterungen.

Wenn Sie die Tastenkombination für einen Befehl ändern, geht die vorhandene Tastenzuordnung in der Regel verloren. Im nachfolgenden Beispiel wird veranschaulicht, wie Sie einem Befehl zwei neue Tastenkombinationen zuweisen und die vorhandenen Tastenzuordnungen beibehalten.

Wenn Sie eine Liste von Befehlen zusammen mit ihren aktuellen Tastenkombinationen anzeigen möchten, führen Sie das ListKeyBindings-Beispiel aus, wie unter Gewusst wie: Anzeigen vorhandener Tastaturzuordnungen veranschaulicht.

Hinweis

Je nach den aktiven Einstellungen oder der Version unterscheiden sich die Dialogfelder und Menübefehle auf Ihrem Bildschirm möglicherweise von den in der Hilfe beschriebenen.Bei der Entwicklung dieser Verfahren war die Option Allgemeine Entwicklungseinstellungen aktiviert.Klicken Sie im Menü Extras auf Einstellungen importieren und exportieren, um die Einstellungen zu ändern.Weitere Informationen finden Sie unter Anpassen der Entwicklungseinstellungen in Visual Studio.

So fügen Sie neue Tastenkombinationen hinzu und behalten vorhandene Tastenkombinationen bei

  1. Erstellen Sie mit dem Visual Studio Add-In-Assistenten ein Add-In. Benennen Sie das Projekt, und klicken Sie auf OK, um den Assistenten zu starten.

    Weitere Informationen zum Verwenden des Visual Studio-Add-In-Assistenten finden Sie unter Gewusst wie: Erstellen von Add-Ins.

  2. Wählen Sie auf der Seite Wählen Sie eine Programmiersprache aus entweder Ein Add-In mit Visual C# erstellen aus, um das unten stehende Visual C#-Beispiel auszuführen, oder Ein Add-In mit Visual Basic erstellen, um das Visual Basic-Beispiel auszuführen.

  3. Fügen Sie die Beispielfunktion (weiter unten in diesem Thema) in die Connect-Klasse des Codes ein, der vom Visual Studio Add-In-Assistenten generiert wird.

  4. Um eine Kopie der Standardtastatureinstellungen zu erstellen, wechseln Sie zu C:\Programme\Microsoft Visual Studio 10\Common7\IDE\.

  5. Klicken Sie mit der rechten Maustaste auf eine der VSK-Dateien, und wählen Sie Kopieren aus.

  6. Fügen Sie die Kopie in den gleichen Ordner ein und benennen Sie sie um.

  7. Um zu überprüfen, ob die neue VSK-Datei in der Liste der Tastenkombinationen angezeigt wird, klicken Sie in Visual Studio im Menü Extras auf Optionen.

  8. Erweitern Sie im linken Bereich des Dialogfelds Optionen den Ordner Umgebung, und wählen Sie Tastatur aus.

    Überprüfen Sie, ob der Name der VSK-Datei, die Sie zuvor angegeben haben, in der Liste Folgendes zusätzliches Tastaturzuordnungsschema anwenden angezeigt wird.

  9. Stellen Sie vor dem Ausführen des Add-In-Beispiels sicher, dass die Tastenkombinationen auf (Standard) festgelegt sind. Dazu klicken Sie im Dialogfeld Optionen im Bereich Tastatur auf Zurücksetzen.

  10. Ersetzen Sie in Schritt prop.Value = "<Filename.vsk>" des Add-In-Beispiels <Filename.vsk> durch den Namen der VSK-Datei, die Sie zuvor angegeben haben.

  11. Rufen Sie die Funktion von der OnConnection-Methode auf, wie unter Gewusst wie: Kompilieren und Ausführen der Codebeispiele für das Automatisierungsobjektmodell beschrieben.

  12. Erstellen Sie das Add-In.

  13. Um das Add-In auszuführen, klicken Sie im Menü Extras auf Add-In-Manager, wählen das erstellte Add-In aus und klicken auf OK.

    Der File.NewFile-Befehl wird an die neuen Tastenkombinationen STRG+ALT+UMSCHALT+Y und STRG+ALT+UMSCHALT+U sowie an die ursprünglichen Tastaturzuordnungen gebunden.

Beispiel

Im nachfolgenden Add-In-Beispiel wird veranschaulicht, wie Sie einem Befehl zwei neue Tastenkombinationen zuweisen und die vorhandenen Tastenzuordnungen beibehalten.

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; 
}

Siehe auch

Aufgaben

Gewusst wie: Zuordnen eines Befehls zu einer einzelnen Tastenkombination

Gewusst wie: Zuordnen eines Befehls zu mehreren Tastenkombinationen

Konzepte

Parameterformat der Bindings-Eigenschaft

Weitere Ressourcen

Zuordnen von Add-In-Befehlen zu Tasten