Windows Forms DataGridView 컨트롤의 선택 모드

애플리케이션이 DataGridView 컨트롤 내의 사용자 선택에 따라 작업을 수행하도록 하고 싶은 경우가 있습니다. 작업에 따라 가능한 선택 유형을 제한하는 것이 좋습니다. 예를 들어 애플리케이션이 현재 선택한 레코드에 대한 보고서를 인쇄할 수 있다고 가정합니다. 이 경우 한 행 내의 아무 곳이나 클릭하면 항상 전체 행이 선택되고 한 번에 하나의 행만 선택하도록 DataGridView 컨트롤을 구성할 수 있습니다.

DataGridView.SelectionMode 속성을 다음 DataGridViewSelectionMode 열거형 값 중 하나로 설정하여 허용되는 선택 항목을 지정할 수 있습니다.

DataGridViewSelectionMode 값 Description
CellSelect 셀을 클릭하여 선택합니다. 행 및 열 머리글은 선택 영역에 사용할 수 없습니다.
ColumnHeaderSelect 셀을 클릭하여 선택합니다. 열 머리글을 클릭하면 전체 열이 선택됩니다. 열 머리글은 정렬에 사용할 수 없습니다.
FullColumnSelect 셀 또는 열 머리글을 클릭하면 전체 열이 선택됩니다. 열 머리글은 정렬에 사용할 수 없습니다.
FullRowSelect 셀 또는 행 머리글을 클릭하면 전체 행이 선택됩니다.
RowHeaderSelect 기본 선택 모드입니다. 셀을 클릭하여 선택합니다. 행 머리글을 클릭하면 전체 행이 선택됩니다.

참고

런타임에서 선택 모드를 변경하면 현재 선택 영역을 자동으로 지웁니다.

기본적으로 사용자는 마우스로 끌고 Ctrl 또는 Shift 키를 눌러서 여러 행, 열 또는 셀을 선택할 수 있고, 선택 영역을 확장 또는 수정하도록 선택하거나 왼쪽 위 머리글 셀을 클릭하여 컨트롤의 모든 셀을 선택할 수 있습니다. 이러한 동작을 방지하려면 MultiSelect 속성을 false로 설정합니다.

FullRowSelectRowHeaderSelect 모드를 사용하면 사용자가 행을 선택하고 DELETE 키를 눌러 행을 삭제할 수 있습니다. 사용자는 현재 셀이 편집 모드에 있지 않고 AllowUserToDeleteRows 속성이 true로 설정되고 기본 데이터 원본이 사용자 기반 행 삭제를 지원하는 경우에만 행을 삭제할 수 있습니다. 이러한 설정은 프로그래밍 방식 행 삭제를 막지 않습니다.

프로그래밍 방식 선택

현재 선택 모드는 프로그래밍 방식 선택과 사용자 선택을 제한합니다. DataGridView 컨트롤에 있는 셀, 행 또는 열의 Selected 속성을 설정하여 프로그래밍 방식으로 현재 선택을 변경할 수 있습니다. 선택 모드에 따라 SelectAll 메서드를 통해 컨트롤의 모든 셀을 선택할 수도 있습니다. 선택을 지우려면 ClearSelection 메서드를 사용합니다.

MultiSelect 속성이 true로 설정된 경우 요소의 Selected 속성을 변경하여 선택 영역에 DataGridView 요소를 추가하거나 제거할 수 있습니다. 그렇지 않으면 한 요소에 대해 Selected 속성을 true로 설정하면 선택에서 다른 요소가 자동으로 제거됩니다.

CurrentCell 속성 값을 변경해도 현재 선택은 변경되지 않습니다.

DataGridView 컨트롤의 SelectedCells, SelectedRowsSelectedColumns 속성을 통해 현재 선택한 셀, 행 또는 열의 컬렉션을 검색할 수 있습니다. 컨트롤의 모든 셀을 선택할 경우라면 이러한 속성에 액세스하는 것은 비효율적입니다. 이럴 때 성능 저하를 방지하려면 먼저 AreAllCellsSelected 메서드를 사용합니다. 또한 선택한 셀, 행 또는 열의 수를 확인하기 위해 이러한 컬렉션에 액세스하는 것은 비효율적일 수 있습니다. 그 대신 GetCellCount, GetRowCount 또는 GetColumnCount 메서드를 사용하여 Selected 값을 전달해야 합니다.

선택한 셀의 프로그래밍 방식 사용을 보여 주는 예제 코드는 DataGridView 클래스 개요에서 찾을 수 있습니다.

참고 항목