Como: Preserve existing comando chave ligações

Normalmente, quando você altera o chave ligação para um comando existente chave ligações são perdidas.O exemplo a seguir, no entanto, demonstra como BIND dois novos chave combinações para um comando e preservar seus já existentes.

Se você deseja ver uma lista corrente dos comandos, execute o exemplo ListKeyBindings conforme apresentada no tópico Como: Exibir ligações de chave existente.

Observação:

As caixas de diálogo e comandos de menu demonstradas podem ser diferentes daqueles descritas na Ajuda, dependendo das configurações ativas ou configurações de edição.Esses procedimentos foram desenvolvidos com o Geral Development Settings ativo.Para alterar as configurações, escolher Import and ExportSettings on the Tools menu.Para obter mais informações, consulte Configurações do Visual Studio.

Para adicionar novo atalho chave s e preservar comando existente chave ligações

  1. Use o Assistente do Visual Studio suplemento para criar um novo Add-in.Nomeie o projeto e clicar OK para iniciar o assistente.

    Para obter mais informações sobre como usar o Assistente do Visual Studio suplemento, see Como: Criar um suplemento.

  2. Sobre o selecionar uma linguagem de programação , selecionar um dos Criar Suplemento usando translation from VPE for Csharp Visual para executar o Visual C# exemplo abaixo, ou Criar um suplemento usando Visual Basic para executar o Visual Basic exemplo.

  3. Colar a função de exemplo abaixo na classe de conectar o código gerado pelo Assistente do Visual Studio suplemento.

  4. Para criar uma cópia do padrão as configurações de teclado, navegar para c:\Arquivos de Programas\Microsoft Visual Studio n:\programa.

  5. clicar com o botão direito do mouse em um dos arquivos vsk e selecionar Cópia no menu de atalho.

  6. Cole a cópia na mesma pasta.

    A cópia é chamada de "Cópia de < nome de arquivo vsk >".

  7. Renomeie o arquivo copiado.

  8. Para verificar se o novo arquivo vsk aparece na lista de ligações de teclado, em Visual Studio clicar Opções on the Ferramentas menu.

  9. No painel esquerdo do Opções diálogo caixa, expandir o Ambiente pasta e selecionar Teclado.

    Verifique se o nome do vsk-arquivo especificado na etapa 7 aparece no Aplicar o esquema de mapeamento de teclado adicionais seguintesmenu suspenso de .

  10. Antes de executar o suplemento de exemplo, certifique-se de que as ligações de teclado estão definidas como (Padrão).Você pode fazer isso clicando em reiniciar in the Teclado painel do Opções caixa de diálogo.

  11. Substitua o <Filename.vsk> com o novo nome do esquema de teclado que você especificou na etapa 7 na prop.Value = "< Filename.vsk>" etapa do exemplo suplemento.

  12. Chamar a função a partir de OnConnection método conforme descrito em Como: Compilar e executar os exemplos de códigos automação objeto modelo.

  13. Crie o suplemento.

  14. Para executar o suplemento, clicar Gerenciador de suplemento on the Ferramentas menu, selecionar o suplemento que você criou e clicar OK.

    The File.NewFile comando está limite ao novo chave ligações (CTRL + ALT + deslocar + Y e CTRL + ALT + deslocar + U), bem sistema autônomo o original chave ligações.

Exemplo

O suplemento do exemplo a seguir demonstra como BIND duas novas combinações de teclas em um comando, preservando seu já existentes.

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

Consulte também

Tarefas

Como: BIND um comando a uma única tecla de atalho

Como: BIND um comando para várias combinações de teclas de atalho

Conceitos

Vinculações de propriedade parâmetro Format

Outros recursos

Ligação suplemento comandos as chaves