DataGridView 행, 열 및 헤더는 여러 가지 요인에 의해 크기가 변경될 수 있습니다. 다음 표에는 이러한 항목이 나와 있습니다.
| 발생 | 설명 |
|---|---|
| 사용자 크기 조정 | 사용자는 행, 열 또는 헤더 구분 기호를 끌거나 두 번 클릭하여 크기를 조정할 수 있습니다. |
| 컨트롤 크기 조정 | 열 채우기 모드에서는 컨트롤이 부모 양식에 도킹되어 있고 사용자가 양식의 크기를 조정할 때, 컨트롤 너비가 변경되면 열 너비도 변경됩니다. |
| 셀 값 변경 | 콘텐츠 기반 자동 크기 조정 모드에서는 새 표시 값에 맞춰 크기가 변경됩니다. |
| 메서드 호출 | 프로그래밍 방식 콘텐츠 기반 크기 조정을 사용하면 메서드 호출 시 셀 값에 따라 편의적 크기 조정을 수행할 수 있습니다. |
| 속성 설정 | 특정 높이 및 너비 값을 설정할 수도 있습니다. |
기본적으로 사용자 크기 조정이 사용 설정되고, 자동 크기 조정이 사용하지 않도록 설정되며, 열보다 더 넓은 셀 값은 클리핑됩니다.
다음 표에서는 기본 동작을 조정하거나 특정 크기 조정 옵션을 사용하여 특정 효과를 달성하는 데 사용할 수 있는 시나리오를 보여줍니다.
| 시나리오 | 이행 |
|---|---|
| 가로 스크롤 막대를 표시하지 않고, 전체 너비를 차지하는 비교적 적은 수의 열에 비슷한 크기의 데이터를 표시하려면 열 채우기 모드를 사용합니다. | AutoSizeColumnsMode 속성을 Fill으로 설정합니다. |
| 다양한 크기의 표시 값으로 열 채우기 모드를 사용합니다. | AutoSizeColumnsMode 속성을 Fill으로 설정합니다. 열 FillWeight 속성을 설정하거나, 컨트롤을 데이터로 채운 후 컨트롤 AutoResizeColumns 메서드를 호출하여 상대적 열 너비를 초기화합니다. |
| 열 채우기 모드를 사용하여 중요도가 다른 값을 입력합니다. | AutoSizeColumnsMode 속성을 Fill으로 설정합니다. 항상 일부 데이터를 표시해야 하는 열 또는 특정 열에 대해 채우기 모드가 아닌 크기 조정 옵션을 사용해야 하는 경우, 해당 열에 대해 큰 MinimumWidth 값을 설정합니다. |
| 열 채우기 모드를 사용하여 컨트롤 배경이 보이지 않도록 설정합니다. | 마지막 열의 AutoSizeMode 속성을 Fill로 설정하고, 다른 열에 대해서는 다른 크기 조정 옵션을 사용합니다. 다른 열에서 사용 가능한 공간을 너무 많이 차지하는 경우 마지막 열의 MinimumWidth 속성을 설정하십시오. |
| 아이콘 또는 ID 열과 같은 고정 너비 열을 표시합니다. | AutoSizeMode을 None로 설정하고 Resizable을 False로 설정합니다. 먼저 Width 속성을 설정하거나 데이터를 컨트롤에 채운 후, AutoResizeColumn 메서드를 호출하여 컨트롤의 너비를 초기화합니다. |
| 셀 콘텐츠가 변경될 때마다 크기를 자동으로 조정하여 클리핑을 방지하고 공간 사용을 최적화합니다. | 자동 크기 조정 속성을 콘텐츠 기반 크기 조정 모드를 나타내는 값으로 설정합니다. 많은 양의 데이터를 사용할 때 성능 저하를 방지하려면 표시된 행만 계산하는 크기 조정 모드를 사용합니다. |
| 여러 행을 사용할 때 성능 저하를 방지하도록 표시된 행의 값에 맞게 크기를 조정합니다. | 자동 또는 프로그래밍 방식 크기 조정에 적절한 크기 조정 모드 열거값을 사용합니다. 스크롤하는 동안 새로 표시된 행의 값에 맞게 크기를 조정하려면 Scroll 이벤트 처리기에서 크기 조정 메서드를 호출하세요. 사용자가 두 번 클릭하여 크기를 조정할 때 표시된 행의 값에 따라 새 크기가 결정되도록 하려면 RowDividerDoubleClick 또는 ColumnDividerDoubleClick 이벤트 처리기에서 크기 조정 메서드를 호출합니다. |
| 성능 저하를 피하거나 사용자가 크기 조정을 할 수 있도록 특정 시간에만 셀 콘텐츠에 맞게 크기를 조정합니다. | 이벤트 처리기에서 콘텐츠 기반 크기 조정 메서드를 호출합니다. 예를 들어 DataBindingComplete 이벤트를 사용하여 바인딩 후 크기를 초기화하고, CellValidated 또는 CellValueChanged 이벤트를 처리하여 바인딩된 데이터 소스의 사용자 편집이나 변경 사항에 맞춰 크기를 조정합니다. |
| 여러 줄 셀 콘텐츠의 행 높이를 조정합니다. | 열 너비가 텍스트 단락을 표시하는 데 적합한지 확인하고 자동 또는 프로그래밍 방식의 콘텐츠 기반 행 크기 조정을 사용하여 높이를 조정합니다. 또한 여러 줄의 콘텐츠가 있는 셀이 `WrapMode` 셀 스타일 값 `True`를 사용하여 표시되는지 확인하십시오. 일반적으로 자동 열 크기 조정 모드를 사용하여 열 너비를 유지하거나 행 높이가 조정되기 전에 특정 너비로 설정합니다. |
마우스로 크기 조정
기본적으로 사용자는 셀 값에 따라 자동 크기 조정 모드를 사용하지 않는 행, 열 및 헤더의 크기를 조정할 수 있습니다. 사용자가 열 채우기 모드와 같은 다른 모드로 크기를 조정하지 못하도록 하려면 다음 DataGridView 프로퍼티 중 하나 이상을 설정합니다.
사용자가 개별 행이나 열의 크기를 조정하지 못하도록 하려면 관련 속성을 설정할 수 있습니다. 기본적으로 Resizable 속성 값은 열의 AllowUserToResizeColumns 속성 값과 행의 AllowUserToResizeRows 속성 값을 기반으로 합니다. 그러나 Resizable을 True 또는 False로 명시적으로 설정하면, 지정된 값이 해당 행이나 열의 컨트롤 값을 재정의합니다. Resizable을 NotSet으로 설정하여 상속을 복원합니다.
NotSet이 값 상속을 복원하기 때문에, 행 또는 열이 DataGridView 컨트롤에 추가되지 않은 경우를 제외하고, Resizable 속성은 절대 NotSet 값을 반환하지 않습니다. 행 또는 열의 Resizable 속성 값이 상속되는지 여부를 판단하려면 State 속성을 검사하십시오. State 값에 ResizableSet 플래그가 포함된 경우, Resizable 속성 값은 상속되지 않습니다.
자동 크기 조정
DataGridView 컨트롤에는 두 가지 종류의 자동 크기 조정이 있습니다: 열 채우기 모드와 콘텐츠 기반 자동 크기 조정입니다.
열 채우기 모드를 사용하면 컨트롤에 표시되는 열이 컨트롤의 표시 영역 너비를 채웁니다. 이 모드에 대한 자세한 내용은 Windows Forms DataGridView 컨트롤의 열 채우기 모드를 참조하세요.
행, 열 및 헤더가 셀 콘텐츠에 맞게 크기를 자동으로 조정하도록 구성할 수도 있습니다. 이 경우 셀 콘텐츠가 변경될 때마다 크기 조정이 발생합니다.
비고
가상 모드를 사용하여 사용자 지정 데이터 캐시에서 셀 값을 유지하는 경우, 사용자가 셀 값을 편집하면 자동 크기 조정이 발생하지만, 캐시된 값을 CellValuePushed 이벤트 처리기 외부에서 변경할 때는 발생하지 않습니다. 이 경우 UpdateCellValue 메서드를 호출하여 컨트롤이 셀 표시를 업데이트하고 현재 자동 크기 조정 모드를 적용하도록 합니다.
콘텐츠 기반 자동 크기 조정이 한 방향에만 활성화된 경우, 예를 들어 행에 대해서만 활성화되고 열에는 활성화되지 않았거나, 열에 대해서만 활성화되고 행에는 활성화되지 않은 경우, 그리고 WrapMode가 활성화된 경우, 다른 방향이 변경될 때마다 크기 조정이 이루어집니다. 예를 들어, 행은 자동 크기 조정에 대해 구성되고 WrapMode이(가) 활성화된 경우, 사용자는 열 구분선을 끌어 열 너비를 변경할 수 있으며, 이때 행 높이는 셀의 내용이 완전히 표시되도록 자동으로 조정됩니다.
콘텐츠 기반 자동 크기 조정을 위해 행과 열을 모두 설정하고 WrapMode가 사용 설정된 경우, 셀 내용이 변경될 때마다 DataGridView 컨트롤이 크기를 조정하며, 새 크기를 계산할 때 이상적인 셀의 높이 대 너비 비율을 사용합니다.
헤더와 행 및 컨트롤 값을 재정의하지 않는 열의 크기 조정 모드를 구성하려면 다음의 DataGridView 속성 중 하나 이상을 설정하십시오.
개별 열의 열 크기 조정 모드를 재정의하려면, 해당 열의 AutoSizeMode 속성을 NotSet 이외의 값으로 설정하십시오. 열의 크기 조정 모드는 실제로 InheritedAutoSizeMode 속성에 의해 결정됩니다. 이 속성의 값은 열의 AutoSizeMode 속성 값을 기반으로 합니다. 단, NotSet 값일 경우에는 컨트롤의 AutoSizeColumnsMode 값이 상속됩니다.
대량의 데이터로 작업할 때는 주의하여 콘텐츠 기반 자동 크기 조정을 사용합니다. 성능 저하를 방지하기 위해 컨트롤의 모든 행을 분석하는 대신 표시된 행에 따라서만 크기를 계산하는 자동 크기 조정 모드를 사용합니다. 성능을 극대화하려면 새 데이터가 로드된 직후와 같이 특정 시간에 크기를 조정할 수 있도록 프로그래밍 방식 크기 조정을 대신 사용합니다.
콘텐츠 기반 자동 크기 조정 모드는 행이나 열 Visible 속성 또는 컨트롤 RowHeadersVisible이나 ColumnHeadersVisible 속성을 false로 설정하여 숨겨진 행, 열 또는 헤더에는 영향을 미치지 않습니다. 예를 들어 큰 셀 값에 맞게 자동으로 크기가 조정된 후 열이 숨겨지면 큰 셀 값이 포함된 행이 삭제될 때 숨겨진 열의 크기가 변경되지 않습니다. 표시 상태가 변경될 때 자동 크기 조정이 발생하지 않으므로 열 Visible 속성을 다시 true로 변경해도 현재 콘텐츠에 따라 크기를 다시 계산하지 않습니다.
프로그래밍 방식 콘텐츠 기반 크기 조정은 표시 유형과 무관하게 행, 열 및 헤더에 영향을 미칩니다.
프로그래밍 방식 크기 조정
자동 크기 조정을 사용하지 않도록 설정하면 다음 속성을 통해 행, 열 또는 헤더의 정확한 너비 또는 높이를 프로그래밍 방식으로 설정할 수 있습니다.
다음 메서드를 사용하여 콘텐츠에 맞게 행, 열 및 헤더의 크기를 프로그래밍 방식으로 조정할 수도 있습니다.
이러한 메서드는 연속 크기 조정을 위해 구성하는 대신 행, 열 또는 헤더의 크기를 한 번 조정합니다. 새 크기는 클리핑 없이 모든 셀 콘텐츠를 표시하도록 자동으로 계산됩니다. 프로그램적으로 InheritedAutoSizeMode 속성 값이 Fill인 열의 크기를 조정할 때, 계산된 콘텐츠 기반 너비는 열의 FillWeight 속성 값을 비례적으로 조정하는 데 사용됩니다. 이렇게 해서 실제 열 너비는 새로운 비율에 따라 계산되며, 모든 열이 컨트롤의 사용 가능한 표시 영역을 균등하게 채웁니다.
프로그래밍 방식 크기 조정은 연속 크기 조정으로 인한 성능 저하를 방지하는 데 유용합니다. 또한 사용자가 크기를 조정할 수 있는 행, 열 및 헤더와 열 채우기 모드에 대한 초기 크기를 제공하는 것도 유용합니다.
일반적으로는 특정 시점에 프로그래밍 방식 크기 조정 메서드를 호출하게 됩니다. 예를 들어 데이터를 로드한 직후 모든 열의 크기를 프로그래밍 방식으로 조정하거나 특정 셀 값이 수정된 후 프로그래밍 방식으로 특정 행의 크기를 조정할 수 있습니다.
콘텐츠 기반 크기 조정 동작 사용자 지정
파생된 DataGridView 셀, 행, 열 형식을 사용할 때, DataGridViewCell.GetPreferredSize, DataGridViewRow.GetPreferredHeight, 또는 DataGridViewColumn.GetPreferredWidth 메서드를 재정의하거나 해당 컨트롤의 보호된 크기 변경 메서드 오버로드를 호출하여 크기 조정 동작을 사용자 지정할 수 있습니다. 보호되는 크기 조정 메서드 오버로드는 이상적인 셀 높이 대 너비 비율을 달성하기 위해 쌍으로 작동하도록 설계되어 지나치게 너비나 높이가 큰 셀을 방지합니다. 예를 들어, AutoResizeRows(DataGridViewAutoSizeRowsMode,Boolean) 메서드의 AutoResizeRows 오버로드를 호출하고 false 매개 변수에 대해 Boolean 값을 전달하는 경우, 이 오버로드는 행의 셀에 대한 이상적인 높이와 너비를 계산하지만, 행 높이만 조정합니다. 그런 다음 AutoResizeColumns 메서드를 호출하여 열 너비를 계산된 이상적인 값으로 조정해야 합니다.
콘텐츠 기반 크기 조정 옵션
크기 조정 속성 및 메서드에 사용되는 열거형은 콘텐츠 기반 크기 조정에 대해 유사한 값을 갖습니다. 이러한 값을 사용하면 원하는 크기를 계산하는 데 사용되는 셀을 제한할 수 있습니다. 모든 크기 조정 열거형의 경우 표시된 셀을 참조하는 이름의 값은 표시된 행의 셀로 계산을 제한합니다. 행을 제외하는 것은 대량의 행을 처리할 때 성능 저하를 피하는 데 유용합니다. 헤더 또는 헤더가 아닌 셀의 셀 값으로 계산을 제한할 수도 있습니다.
참고하십시오
- DataGridView
- DataGridView.AllowUserToResizeColumns
- DataGridView.AllowUserToResizeRows
- DataGridView.ColumnHeadersHeightSizeMode
- DataGridView.RowHeadersWidthSizeMode
- DataGridViewBand.Resizable
- DataGridView.AutoSizeColumnsMode
- DataGridView.AutoSizeRowsMode
- DataGridViewColumn.AutoSizeMode
- DataGridViewColumn.InheritedAutoSizeMode
- DataGridView.RowHeadersWidth
- DataGridView.ColumnHeadersHeight
- DataGridViewRow.Height
- DataGridViewColumn.Width
- DataGridView.AutoResizeColumn
- DataGridView.AutoResizeColumns
- DataGridView.AutoResizeColumnHeadersHeight
- DataGridView.AutoResizeRow
- DataGridView.AutoResizeRows
- DataGridView.AutoResizeRowHeadersWidth
- DataGridViewAutoSizeRowMode
- DataGridViewAutoSizeRowsMode
- DataGridViewAutoSizeColumnMode
- DataGridViewAutoSizeColumnsMode
- DataGridViewColumnHeadersHeightSizeMode
- DataGridViewRowHeadersWidthSizeMode
- Windows Forms DataGridView 컨트롤에서 열과 행의 크기 조정
- Windows Forms DataGridView 컨트롤의 열 채우기 모드
- 방법: Windows Forms DataGridView 컨트롤의 크기 조정 모드 설정
.NET Desktop feedback