Практическое руководство. Сохранение существующих сочетаний клавиш
Надстройки Visual Studio выступан сопоставления в Visual Studio 2013. Необходимо обновить для надстройки с расширениями VSPackage. Дополнительные сведения об обновлении см. в разделе Часто задаваемые вопросы. Преобразование надстроек в расширения VSPackage.
При изменении сочетания клавиш для определенной команды существующее сочетание обычно удаляется. Приведенный ниже пример демонстрирует способ привязки двух новых сочетаний клавиш к команде и сохранения существующих.
Чтобы просмотреть текущий список команд и их сочетаний клавиш, запустите пример ListKeyBindings, представленный в разделе Практическое руководство. Просмотр существующих привязок к клавишам.
Примечание
Отображаемые диалоговые окна и команды меню могут отличаться от описанных в справке в зависимости от текущих настроек или выпуска.Эти процедуры были разработаны с обычными параметрами разработки.Чтобы изменить параметры, выберите команду Импорт и экспортпараметров в меню Сервис.Для получения дополнительной информации см. Настройка параметров разработки в Visual Studio.
Добавление новых сочетаний клавиш и сохранение существующих
Используйте Мастер надстроек Visual Studio для создания новой надстройки. Назовите проект и нажмите ОК для запуска мастера.
Дополнительные сведения об использовании Мастера надстроек Visual Studio см. в разделе Практическое руководство. Создание надстройки.
На странице Выбрать язык программирования выберите Создать надстройку, используя Visual C# для запуска следующего примера Visual C# или Создать надстройку, используя Visual Basic для запуска примера Visual Basic.
Вставьте следующий пример функции (приведен ниже в этом разделе) в класс Connect кода, созданного Мастером надстроек Visual Studio.
Чтобы создать копию параметров клавиатуры по умолчанию, перейдите в каталог C:\Program Files\Microsoft Visual Studio 10\Common7\IDE.
Щелкните правой кнопкой мыши один из файлов VSK и выберите команду Копировать.
Вставьте копию в ту же папку и переименуйте ее.
Чтобы удостовериться в том, что VSK-файл появился в списке сочетаний клавиш, откройте Visual Studio и выберите в меню Сервис команду Параметры.
В левой области диалогового окна Параметры разверните папку Среда и выберите Клавиатура.
Убедитесь в том, что имя указанного ранее VSK-файла появилось в списке Применить следующую дополнительную схему назначений клавиш.
Перед запуском примера надстройки убедитесь, что сочетания клавиш имеют значение**(По умолчанию)**. Для этого нажмите кнопку Сброс на панели Клавиатура в диалоговом окне Параметры.
На шаге prop.Value = "<Filename.vsk>" примера надстройки замените <Filename.vsk> именем VSK-файла, указанного ранее.
Вызовите функцию из метода OnConnection, как описано в разделе Практическое руководство. Компиляция и выполнение примеров кода модели объектов автоматизации.
Выполните построение надстройки.
Чтобы запустить надстройку, в меню Сервис щелкните элемент Диспетчер надстроек, выберите созданную надстройку и нажмите ОК.
Команда File.NewFile будет привязана к новым сочетаниям клавиш (CTRL+ALT+SHIFT+Y и CTRL+ALT+SHIFT+U), а также к исходным сочетаниям.
Пример
Приведенный ниже пример надстройки иллюстрирует способ привязки двух новых сочетаний клавиш к команде и сохранения существующих.
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;
}
См. также
Задачи
Практическое руководство. Привязка команды к одному сочетанию клавиш
Практическое руководство. Привязка команды к нескольким сочетаниям клавиш
Основные понятия
Формат параметров свойства привязки