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