Sdílet prostřednictvím


Postupy: Uchování stávajících klávesových zkratek

Doplňky Visual Studio jsou ve verzi aplikace Visual Studio 2013 zastaralé.Měli byste upgradovat doplňky na rozšíření VSPackage.Další informace o upgradu viz Nejčastější dotazy: Převádění doplňků na rozšíření VSPackage.

Při změně klávesová zkratky pro příkaz je existující klávesová zkratka obvykle ztracena.Následující příklad ukazuje, jak vytvořit vazbu dvou nových klávesových zkratek k příkazu a zároveň zachovat stávající.

Pokud chcete zobrazit seznam příkazů a jejich aktuální zkratky, spusťte příklad ListKeyBindings podle Postupy: Zobrazení existujících vazeb klíče.

[!POZNÁMKA]

Dialogová okna a příkazy nabídek, které vidíte, se mohou lišit od těch popsaných v nápovědě v závislosti na aktivních nastaveních nebo edici.Tyto postupy byly vyvinuty s aktivním Obecným vývojovým nastavením.Chcete-li změnit nastavení, zvolte Nastaveníimportu a exportu v nabídce Nástroje.Další informace naleznete v tématu Přizpůsobení nastavení pro vývoj v sadě Visual Studio.

Přidání nových klávesových zkratek a zachování stávajících

  1. Použijte Průvodce doplňky sady Visual Studio k vytvoření doplňku.Pojmenujte projekt a kliknutím na OK spusťte průvodce.

    Další informace o použití Průvodce doplňkem Visual Studio naleznete v tématu Postupy: Vytvoření doplňku.

  2. Na stránce Zvolte programovací jazyk vyberte buď možnost Vytvořit doplněk pomocí jazyka Visual C# ke spuštění níže uvedeného příkladu Visual C#, nebo Vytvořit doplněk pomocí jazyka Visual Basic ke spuštění příkladu Visual Basic.

  3. Vložte ukázkovou funkci (viz dále v tomto tématu) do třídy Připojit kódu, který je generován Průvodcem doplňky sady Visual Studio.

  4. Chcete-li vytvořit kopii výchozího nastavení klávesnice, vyhledejte ..\Program Files\Microsoft Visual Studio 10\Common7\IDE\.

  5. Klikněte na jeden soubor .vsk pravým tlačítkem myši a pak klikněte na Kopírovat.

  6. Kopii vložte do stejné složky a přejmenujte ji.

  7. Chcete-li ověřit, zda se nový soubor .vsk zobrazí v seznamu klávesových zkratek, v aplikaci Visual Studio klepněte na možnost Možnosti v nabídce Nástroje.

  8. V levém podokně dialogového okna Možnosti rozbalte složku Prostředí a vyberte Klávesnice.

    Ujistěte se, zda je název souboru .vsk, který jste dříve zadali, zobrazen v seznamu Použít následující dodatečné schéma mapování klávesnice.

  9. Dříve než spustíte doplněk v příkladu, ujistěte se, že klávesové zkratky klávesnice byly nastaveny na (Výchozí).To můžete provést klepnutím na možnost Obnovit v podokně Klávesnice dialogového okna Možnosti.

  10. V kroku prop.Value = "<Filename.vsk>" příkladu doplňku nahraďte <Filename.vsk> pomocí nového názvu souboru .vsk, který jste zadali dříve.

  11. Volání funkce z metody OnConnection, jak je popsáno v Postupy: Kompilace a spuštění příkladů kódu objektu automatizace.

  12. Sestavte řešení.

  13. Chcete-li spustit doplněk, klepněte na možnost Správce doplňků v nabídce Nástroje, vyberte doplněk, který jste vytvořili a klepněte na možnost OK.

    Příkaz File.NewFile je vázán na nové klávesové zkratky CTRL + ALT + SHIFT + A a CTRL + ALT + SHIFT + U a také na původní zkratky.

Příklad

Následující příklad doplňku ukazuje, jak vytvořit vazbu dvou nových klávesových zkratek k příkazu a zároveň zachovat stávající.

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

Viz také

Úkoly

Postupy: Vytvoření vazby příkazu k jediné klávesové zkratce

Postupy: Vytvoření vazby příkazu k více klávesovým zkratkám

Koncepty

Formát parametru vlastností vazeb

Další zdroje

Vázání doplňkových příkazů na klávesy