DataGridView 컨트롤을 사한 기본 키보드 및 마우스 동작

다음 표는 사용자가 키보드와 마우스를 통해 DataGridView 컨트롤을 조작할 수 있는 방법을 설명합니다.

참고

키보드 동작을 사용자 지정하려면 KeyDown과 같은 표준 키보드 이벤트를 처리할 수 있습니다. 그러나 편집 모드에서는 호스트된 편집 컨트롤이 키보드 입력을 수신하고 키보드 이벤트는 DataGridView 컨트롤에 대해 발생하지 않습니다. 편집 컨트롤 이벤트를 처리하려면 EditingControlShowing 이벤트 처리기의 편집 컨트롤에 처리기를 연결합니다. 또는 DataGridView 서브클래스에서 ProcessDialogKeyProcessDataGridViewKey 메서드를 재정의하여 키보드 동작을 사용자 지정할 수 있습니다.

기본 키보드 처리

기본 탐색 및 항목 키

키 또는 키 조합 설명
아래쪽 화살표 포커스를 현재 셀 바로 아래의 셀로 이동합니다. 포커스가 마지막 행에 있으면 아무 것도 수행하지 않습니다.
왼쪽 화살표 행의 이전 셀로 포커스를 이동합니다. 포커스가 행의 첫 번째 셀에 있는 경우 아무 것도 수행하지 않습니다.
오른쪽 화살표 포커스를 행의 다음 셀로 이동합니다. 포커스가 행의 마지막 셀에 있으면 아무 것도 수행하지 않습니다.
위쪽 화살표 포커스를 현재 셀 바로 위의 셀로 이동합니다. 포커스가 첫 번째 행에 있으면 아무 것도 수행하지 않습니다.
Home 포커스를 현재 행의 첫 번째 셀로 이동합니다.
End 포커스를 현재 행의 마지막 셀로 이동합니다.
페이지 아래로 컨트롤을 완전히 표시되는 행 수만큼 아래로 스크롤합니다. 열을 변경하지 않고 마지막으로 완전히 표시된 행으로 포커스를 이동합니다.
페이지 위로 컨트롤을 완전히 표시되는 행 수만큼 위로 스크롤합니다. 열을 변경하지 않고 첫 번째 표시된 행으로 포커스를 이동합니다.
Tab StandardTab 속성 값이 false이면 포커스를 현재 행의 다음 셀로 이동합니다. 포커스가 이미 행의 마지막 셀에 있는 경우 포커스를 다음 행의 첫 번째 셀로 이동합니다. 포커스가 컨트롤의 마지막 셀에 있는 경우 부모 컨테이너의 탭 순서에서 다음 컨트롤로 포커스를 이동합니다.

StandardTab 속성 값이 true이면 부모 컨테이너의 탭 순서에서 다음 컨트롤로 포커스를 이동합니다.
Shift + Tab StandardTab 속성 값이 false이면 포커스를 현재 행의 이전 셀로 이동합니다. 포커스가 이미 행의 첫 번째 셀에 있는 경우 포커스를 이전 행의 마지막 셀로 이동합니다. 포커스가 컨트롤의 첫 번째 셀에 있는 경우 부모 컨테이너의 탭 순서에서 이전 컨트롤로 포커스를 이동합니다.

StandardTab 속성 값이 true이면 부모 컨테이너의 탭 순서에서 이전 컨트롤로 포커스를 이동합니다.
Ctrl + Tab StandardTab 속성 값이 false이면 부모 컨테이너의 탭 순서에서 다음 컨트롤로 포커스를 이동합니다.

StandardTab 속성 값이 true이면 포커스를 현재 행의 다음 셀로 이동합니다. 포커스가 이미 행의 마지막 셀에 있는 경우 포커스를 다음 행의 첫 번째 셀로 이동합니다. 포커스가 컨트롤의 마지막 셀에 있는 경우 부모 컨테이너의 탭 순서에서 다음 컨트롤로 포커스를 이동합니다.
Ctrl + Shift + Tab StandardTab 속성 값이 false이면 부모 컨테이너의 탭 순서에서 이전 컨트롤로 포커스를 이동합니다.

StandardTab 속성 값이 true이면 포커스를 현재 행의 이전 셀로 이동합니다. 포커스가 이미 행의 첫 번째 셀에 있는 경우 포커스를 이전 행의 마지막 셀로 이동합니다. 포커스가 컨트롤의 첫 번째 셀에 있는 경우 부모 컨테이너의 탭 순서에서 이전 컨트롤로 포커스를 이동합니다.
Ctrl + 화살표 화살표 방향으로 가장 먼 셀로 포커스를 이동합니다.
Ctrl + Home 포커스를 컨트롤의 첫 번째 셀로 이동합니다.
Ctrl + End 포커스를 컨트롤의 마지막 셀로 이동합니다.
Ctrl + 페이지 아래로/위로 페이지 아래로 또는 페이지 위로 이동과 같습니다.
F2 EditMode 속성 값이 EditOnF2 또는 EditOnKeystrokeOrF2이면 현재 셀을 셀 편집 모드로 전환합니다.
F3 DataGridViewColumn.SortMode 속성 값이 Automatic인 경우 현재 열을 정렬합니다. 현재 열 헤더를 클릭하는 것과 같습니다. .NET Framework 4.7.2 이후부터 사용할 수 있습니다. 이 기능을 사용하려면 애플리케이션이 .NET Framework 4.7.2 이상 버전을 대상으로 하거나 AppContext 스위치를 사용하여 접근성 향상을 명시적으로 옵트인해야 합니다.
F4 현재 셀이 DataGridViewComboBoxCell인 경우 셀을 편집 모드로 전환하고 드롭다운 목록을 표시합니다.
Alt + 현재 셀이 DataGridViewComboBoxCell인 경우 셀을 편집 모드로 전환하고 드롭다운 목록을 표시합니다.
Alt + 왼쪽/오른쪽 화살표 현재 셀 열의 너비를 늘리거나 줄입니다.
스페이스바 현재 셀이 DataGridViewButtonCell, DataGridViewLinkCell 또는 DataGridViewCheckBoxCell인 경우 CellClickCellContentClick 이벤트를 발생시킵니다. 현재 셀이 DataGridViewButtonCell이면 단추도 누릅니다. 현재 셀이 DataGridViewCheckBoxCell이면 확인 상태도 변경합니다.
Enter 현재 셀과 행의 변경 내용을 커밋하고 포커스를 현재 셀 바로 아래의 셀로 이동합니다. 포커스가 마지막 행에 있으면 포커스를 이동하지 않고 변경 내용을 커밋합니다.
Esc 컨트롤이 편집 모드인 경우 편집을 취소합니다. 컨트롤이 편집 모드가 아닌 경우 컨트롤이 편집을 지원하는 데이터 원본에 바인딩되거나 행 수준 커밋 범위로 가상 모드가 구현된 경우 현재 행의 변경된 내용을 되돌립니다.
백스페이스 셀을 편집할 때 삽입 지점 앞의 문자를 삭제합니다.
삭제 셀을 편집할 때 삽입 지점 뒤의 문자를 삭제합니다.
Ctrl + Enter 포커스를 이동하지 않고 현재 셀에 변경 내용을 커밋합니다. 또한 컨트롤이 편집을 지원하는 데이터 원본에 바인딩되거나 행 수준 커밋 범위로 가상 모드가 구현된 경우 현재 행에 대한 변경 내용을 커밋합니다.
Ctrl + 0 셀을 편집할 수 있는 경우 현재 셀에 DBNull.Value 값을 입력합니다. 기본적으로 DBNull 셀 값의 표시 값은 현재 셀에 적용된 DataGridViewCellStyleNullValue 속성의 값입니다.

선택 키

MultiSelect 속성이 false로 설정되고 SelectionMode 속성이 CellSelect로 설정되면 탐색 키를 사용하여 현재 셀을 변경하면 선택 영역이 새 셀로 변경됩니다. Shift, CtrlAlt 키는 이 동작에 영향을 미치지 않습니다.

SelectionModeRowHeaderSelect 또는 ColumnHeaderSelect로 설정된 경우 동일한 동작이 발생하지만 다음이 추가됩니다.

키 또는 키 조합 Description
Shift + 스페이스바 전체 행 또는 열(행 또는 열 헤더 클릭과 동일)을 선택합니다.
탐색 키(화살표 키, 페이지 위쪽/아래쪽, Home, End) 전체 행 또는 열을 선택한 경우 현재 셀을 새 행 또는 열로 변경하면 선택 영역이 (선택 모드에 따라) 전체 새 행 또는 열로 이동합니다.

MultiSelectfalse로 설정되고 SelectionModeFullRowSelect 또는 FullColumnSelect로 설정되면 키보드를 사용하여 현재 셀을 새 행 또는 열로 변경하면 선택 영역이 전체 새 행 또는 열로 이동합니다. Shift, CtrlAlt 키는 이 동작에 영향을 미치지 않습니다.

MultiSelecttrue로 설정된 경우 탐색 동작은 변경되지 않지만 Shift 키를 누른 상태에서 키보드로 탐색하면(Ctrl + Shift 포함) 다중 셀 선택이 수정됩니다. 탐색을 시작하기 전에 컨트롤은 현재 셀을 앵커 셀로 표시합니다. Shift 키를 누르며 탐색할 때 선택 영역에는 앵커 셀과 현재 셀 사이의 모든 셀이 포함됩니다. 컨트롤의 다른 셀은 이미 선택된 경우 선택된 상태로 유지되지만 키보드 탐색에서 앵커 셀과 현재 셀 사이에 일시적으로 배치되면 선택 취소될 수 있습니다.

MultiSelecttrue로 설정되거나 SelectionModeFullRowSelect 또는 FullColumnSelect로 설정된 경우 앵커 셀과 현재 셀의 동작은 동일하지만 전체 행 또는 열만 선택되거나 선택 취소됩니다.

기본 마우스 처리

기본 마우스 처리

참고

왼쪽 마우스 단추로 셀을 클릭하면 항상 현재 셀이 변경됩니다. 오른쪽 마우스 단추로 셀을 클릭하면 바로 가기 메뉴가 열립니다.

마우스 작업 Description
마우스 왼쪽 단추 아래로 클릭한 셀을 현재 셀로 만들고 DataGridView.CellMouseDown 이벤트를 발생시킵니다.
마우스 왼쪽 단추 위로 DataGridView.CellMouseUp 이벤트를 발생시킵니다.
마우스 왼쪽 단추 클릭 DataGridView.CellClickDataGridView.CellMouseClick 이벤트를 발생시킵니다.
마우스 왼쪽 단추를 누른 다음 열 헤더 셀을 끕니다. DataGridView.AllowUserToOrderColumns 속성이 true이면 열을 새 위치로 드롭할 수 있도록 이동합니다.

마우스 선택

마우스 가운데 단추 또는 마우스 휠과 연결된 선택 동작이 없습니다.

MultiSelect 속성이 false로, SelectionMode 속성이 CellSelect로 설정된 경우 다음 동작이 발생합니다.

마우스 작업 Description
클릭 사용자가 셀을 클릭하는 경우 현재 셀만 선택합니다. 사용자가 행 또는 열 헤더를 클릭하는 경우 선택 동작이 없습니다.
그런 다음 사용할 수 있는 경우 바로 가기 메뉴를 표시합니다.

선택 모드에 따라 행 또는 열 헤더를 클릭하면 전체 행 또는 열을 선택하고 현재 셀을 행이나 열의 첫 번째 셀로 설정한다는 점을 제외하면 SelectionModeRowHeaderSelect 또는 ColumnHeaderSelect로 설정될 때 동일한 동작이 발생합니다.

SelectionModeFullRowSelect 또는 FullColumnSelect로 설정된 경우 행이나 열에 있는 셀을 클릭하면 전체 행 또는 열이 선택됩니다.

MultiSelecttrue로 설정된 경우 Ctrl 또는 Shift 키를 누른 상태에서 셀을 클릭하면 다중 셀 선택 영역이 수정됩니다.

Ctrl 키를 누른 상태에서 셀을 클릭하면 셀이 선택 상태를 변경하고 다른 모든 셀은 현재 선택 상태를 유지합니다.

Shift 키를 누른 상태에서 셀이나 일련의 셀을 클릭하면 선택 영역에는 현재 셀과 첫 번째 클릭 전의 현재 셀의 위치에 있는 앵커 셀 사이의 모든 셀이 포함됩니다. 여러 셀에서 포인터를 클릭하고 끌면 앵커 셀은 끌기 작업의 시작 부분에서 클릭한 셀입니다. Shift 키를 누른 상태에서 클릭하면 현재 셀을 변경하지만 앵커 셀은 변경하지 않습니다. 컨트롤의 다른 셀은 이미 선택된 경우 선택된 상태로 유지되지만 마우스 탐색에서 앵커 셀과 현재 셀 사이에 일시적으로 배치되면 선택 취소될 수 있습니다.

MultiSelecttrue로, SelectionModeRowHeaderSelect로 설정된 경우 ColumnHeaderSelectShift 키를 누른 상태에서 행 또는 열 헤더를 클릭하면 해당 선택 영역이 있는 경우 전체 행 또는 열의 기존 선택 영역이 수정됩니다. 그렇지 않으면 선택 영역을 지우고 전체 행 또는 열을 새로 선택합니다. 그러나 Ctrl 키를 누른 상태에서 행 또는 열 헤더를 클릭하면 현재 선택 영역을 수정하지 않고 클릭한 행이나 열을 현재 선택 영역에 추가하거나 제거합니다.

MultiSelecttrue로, SelectionModeFullRowSelect 또는 FullColumnSelect로 설정된 경우, Shift 또는 Ctrl 키를 누른 상태에서 셀을 클릭하면 전체 행과 열만 영향을 받는다는 점을 제외하고 동일한 방식으로 동작합니다.

참고 항목