명령: 명령을 여러 바로 가기 키에 바인딩
하나의 명령에 둘 이상의 바로 가기 키를 바인딩할 수 있습니다. 예를 들어, 이러한 방식은 프로젝트에 대한 작업을 수행하고 있는 두 명의 사용자가 동일한 명령을 실행하는 데 서로 다른 바로 가기 키를 사용하려는 경우에 유용합니다. 이러한 바인딩을 위해서는 Object 형식의 배열에 문자열 요소로 바로 가기 키를 전달해야 합니다.
참고
일부 Visual Studio 사용자 인터페이스 요소의 경우 다음 지침에 설명된 것과 다른 이름 또는 위치가 시스템에 표시될 수 있습니다. 설치한 Visual Studio 버전과 사용하는 설정에 따라 이러한 요소가 결정됩니다. 자세한 내용은 설정에 대한 작업을 참조하십시오.
명령을 여러 바로 가기 키에 바인딩하려면
Visual Studio 추가 기능 마법사를 사용하여 추가 기능을 만듭니다. 프로젝트의 이름을 지정하고 확인을 클릭하여 마법사를 시작합니다.
Visual Studio 추가 기능 마법사를 사용하는 방법에 대한 자세한 내용은 방법: 추가 기능 만들기를 참조하십시오.
프로그래밍 언어 선택 페이지에서 Visual C#을 사용하여 추가 기능 만들기를 선택하여 이 항목의 Visual C# 예제를 실행하거나, Visual Basic을 사용하여 추가 기능 만들기를 선택하여 Visual Basic 예제를 실행합니다.
Visual Studio 추가 기능 마법사를 통해 생성된 코드의 Connect 클래스에 예제 함수를 붙여넣습니다.
기본 키보드 설정의 복사본을 만들려면 .. \Program Files\Microsoft Visual Studio 10\Common7\IDE\로 이동하여 .vsk 파일 중 하나를 마우스 오른쪽 단추로 클릭한 다음 복사를 클릭합니다. 동일한 폴더에 복사본을 붙여넣습니다. 이 복사본에는 "사본 - .vsk 파일 이름"이라는 이름이 지정됩니다.
파일의 복사본 이름을 바꿉니다.
키보드 바인딩 목록에 새 .vsk 파일이 나타나는지 확인하려면 Visual Studio에서 도구 메뉴의 옵션을 클릭합니다.
옵션 대화 상자의 왼쪽 창에서 환경 폴더를 확장하고 키보드를 선택합니다.
앞에서 이름을 바꾼 .vsk 파일의 이름이 다음 추가 키보드 매핑 구성표 적용 목록에 나타나는지 확인합니다.
추가 기능 예제를 실행하기 전에 키보드 바인딩을 **(기본값)**으로 설정해야 합니다. 이렇게 하려면 옵션 대화 상자의 키보드 창에서 다시 설정을 클릭합니다.
추가 기능 예제의 prop.Value = "< Filename.vsk>" 단계에서 <Filename.vsk>를 앞서 지정한 새 키보드 구성표 이름으로 바꿉니다.
방법: 자동화 개체 모델 코드의 예제 컴파일 및 실행에 설명된 대로 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;
}