Windows Forms DataGridView 컨트롤의 크기 조정 옵션Sizing Options in the Windows Forms DataGridView Control

행, 열 및 헤더를 DataGridView 여러 번의 결과로 크기가 변경 될 수 있습니다.DataGridView rows, columns, and headers can change size as a result of many different occurrences. 다음 표에서는 이러한 항목을 보여 줍니다.The following table shows these occurrences.

발생 빈도Occurrence DescriptionDescription
사용자 크기 조정User resize 사용자는 행, 열 또는 머리글 구분선을 끌거나 두 번 클릭 하 여 크기 조정을 수행할 수 있습니다.Users can make size adjustments by dragging or double-clicking row, column, or header dividers.
컨트롤 크기 조정Control resize 열 채우기 모드에서는 컨트롤 너비가 변경 될 때 열 너비가 변경 됩니다. 예를 들어 컨트롤을 부모 폼에 도킹 하 고 사용자가 폼의 크기를 조정 하는 경우입니다.In column fill mode, column widths change when the control width changes; for example, when the control is docked to its parent form and the user resizes the form.
셀 값 변경Cell value change 내용 기반 자동 크기 조정 모드에서 크기는 새 표시 값에 맞게 변경 됩니다.In content-based automatic sizing modes, sizes change to fit new display values.
메서드 호출Method call 프로그래밍 방식의 내용 기반 크기 조정을 사용 하면 메서드 호출 시 셀 값에 따라 적절 한 크기 조정을 수행할 수 있습니다.Programmatic content-based resizing lets you make opportunistic size adjustments based on cell values at the time of the method call.
속성 설정Property setting 특정 높이 및 너비 값을 설정할 수도 있습니다.You can also set specific height and width values.

기본적으로 사용자 크기 조정을 사용 하도록 설정 되 고 자동 크기 조정을 사용 하지 않도록 설정 되며 열 보다 더 넓은 셀 값이 잘립니다.By default, user resizing is enabled, automatic sizing is disabled, and cell values that are wider than their columns are clipped.

다음 표에서는 기본 동작을 조정 하거나 특정 크기 조정 옵션을 사용 하 여 특정 효과를 얻기 위해 사용할 수 있는 시나리오를 보여 줍니다.The following table shows scenarios that you can use to adjust the default behavior or to use specific sizing options to achieve particular effects.

시나리오Scenario 구현Implementation
열 채우기 모드를 사용 하 여 가로 스크롤 막대를 표시 하지 않고 컨트롤의 전체 너비를 차지 하는 비교적 적은 수의 열에 비슷한 크기의 데이터를 표시 합니다.Use column fill mode for displaying similarly sized data in a relatively small number of columns that occupy the entire width of the control without displaying the horizontal scroll bar. AutoSizeColumnsMode 속성을 Fill로 설정합니다.Set the AutoSizeColumnsMode property to Fill.
다양 한 크기의 표시 값으로 열 채우기 모드를 사용 합니다.Use column fill mode with display values of varying sizes. AutoSizeColumnsMode 속성을 Fill로 설정합니다.Set the AutoSizeColumnsMode property to Fill. FillWeight 속성을 설정 하거나 컨트롤을 데이터로 채운 후 컨트롤 AutoResizeColumns 메서드를 호출 하 여 상대적 열 너비를 초기화 합니다.Initialize relative column widths by setting the column FillWeight properties or by calling the control AutoResizeColumns method after filling the control with data.
다양 한 중요도의 값으로 열 채우기 모드를 사용 합니다.Use column fill mode with values of varying importance. AutoSizeColumnsMode 속성을 Fill로 설정합니다.Set the AutoSizeColumnsMode property to Fill. 항상 데이터의 일부를 표시 하거나 특정 열에 대해 채우기 모드 이외의 크기 조정 옵션을 사용 해야 하는 열에 대해 큼 MinimumWidth 값을 설정 합니다.Set large MinimumWidth values for columns that must always display some of their data or use a sizing option other than fill mode for specific columns.
열 채우기 모드를 사용 하 여 컨트롤 배경을 표시 하지 않습니다.Use column fill mode to avoid displaying the control background. 마지막 열의 AutoSizeMode 속성을 Fill 설정 하 고 다른 열에 다른 크기 조정 옵션을 사용 합니다.Set the AutoSizeMode property of the last column to Fill and use other sizing options for the other columns. 다른 열에서 사용 가능한 공간을 너무 많이 사용 하는 경우 마지막 열의 MinimumWidth 속성을 설정 합니다.If the other columns use too much of the available space, set the MinimumWidth property of the last column.
아이콘 또는 ID 열과 같은 고정 너비 열을 표시 합니다.Display a fixed-width column, such as an icon or ID column. AutoSizeModeNone로 설정 하 고 열에 대해 False Resizable 합니다.Set AutoSizeMode to None and Resizable to False for the column. Width 속성을 설정 하거나 컨트롤을 데이터로 채운 후 컨트롤 AutoResizeColumn 메서드를 호출 하 여 너비를 초기화 합니다.Initialize its width by setting the Width property or by calling the control AutoResizeColumn method after filling the control with data.
자르기를 방지 하 고 공간 사용을 최적화 하기 위해 셀 내용이 변경 될 때마다 크기를 자동으로 조정 합니다.Adjust sizes automatically whenever cell contents change to avoid clipping and to optimize the use of space. 자동 크기 조정 속성을 내용 기반 크기 조정 모드를 나타내는 값으로 설정 합니다.Set an automatic sizing property to a value that represents a content-based sizing mode. 많은 양의 데이터로 작업할 때 성능 저하를 방지 하려면 표시 된 행만 계산 하는 크기 조정 모드를 사용 합니다.To avoid a performance penalty when working with large amounts of data, use a sizing mode that calculates displayed rows only.
많은 행으로 작업할 때 성능 저하를 방지 하기 위해 표시 되는 행의 값에 맞게 크기를 조정 합니다.Adjust sizes to fit values in displayed rows to avoid performance penalties when working with many rows. 자동 또는 프로그래밍 방식으로 크기를 조정 하 여 적절 한 크기 조정 모드 열거 값을 사용 합니다.Use the appropriate sizing-mode enumeration values with automatic or programmatic resizing. 스크롤할 때 새로 표시 된 행의 값에 맞게 크기를 조정 하려면 Scroll 이벤트 처리기에서 크기 조정 메서드를 호출 합니다.To adjust sizes to fit values in newly displayed rows while scrolling, call a resizing method in a Scroll event handler. 표시 된 행의 값만 새 크기를 결정 하도록 사용자를 두 번 클릭 하 여 크기 조정을 사용자 지정 하려면 RowDividerDoubleClick 또는 ColumnDividerDoubleClick 이벤트 처리기에서 크기 조정 메서드를 호출 합니다.To customize user double-click resizing so that only values in displayed rows determine the new sizes, call a resizing method in a RowDividerDoubleClick or ColumnDividerDoubleClick event handler.
특정 시간에만 셀 내용에 맞게 크기를 조정 하 여 성능 저하를 방지 하거나 사용자 크기 조정을 사용 하도록 설정 합니다.Adjust sizes to fit cell contents only at specific times to avoid performance penalties or to enable user resizing. 이벤트 처리기에서 내용 기반 크기 조정 메서드를 호출 합니다.Call a content-based resizing method in an event handler. 예를 들어 DataBindingComplete 이벤트를 사용 하 여 바인딩 후 크기를 초기화 하 고 CellValidated 또는 CellValueChanged 이벤트를 처리 하 여 크기를 조정 하 여 바인딩된 데이터 소스의 사용자 편집 또는 변경 내용을 보정 합니다.For example, use the DataBindingComplete event to initialize sizes after binding, and handle the CellValidated or CellValueChanged event to adjust sizes to compensate for user edits or changes in a bound data source.
여러 줄 셀 내용의 행 높이를 조정 합니다.Adjust row heights for multiline cell contents. 텍스트 단락을 표시 하는 데 열 너비가 적절 한지 확인 하 고 자동 또는 프로그래밍 내용 기반 행 크기 조정을 사용 하 여 높이를 조정 합니다.Ensure that column widths are appropriate for displaying paragraphs of text and use automatic or programmatic content-based row sizing to adjust the heights. 또한 TrueWrapMode 셀 스타일 값을 사용 하 여 여러 줄로 된 내용이 있는 셀이 표시 되도록 합니다.Also ensure that cells with multiline content are displayed using a WrapMode cell style value of True.

일반적으로 자동 열 크기 조정 모드를 사용 하 여 열 너비를 유지 하거나 행 높이를 조정 하기 전에 특정 너비로 설정 합니다.Typically, you will use an automatic column sizing mode to maintain column widths or set them to specific widths before row heights are adjusted.

마우스로 크기 조정Resizing with the Mouse

기본적으로 사용자는 셀 값을 기반으로 자동 크기 조정 모드를 사용 하지 않는 행, 열 및 헤더의 크기를 조정할 수 있습니다.By default, users can resize rows, columns, and headers that do not use an automatic sizing mode based on cell values. 열 채우기 모드와 같은 다른 모드를 사용 하 여 사용자가 크기를 조정 하지 못하게 하려면 다음 DataGridView 속성 중 하나 이상을 설정 합니다.To prevent users from resizing with other modes, such as column fill mode, set one or more of the following DataGridView properties:

사용자가 Resizable 속성을 설정 하 여 개별 행 또는 열의 크기를 조정 하지 못하게 할 수도 있습니다.You can also prevent users from resizing individual rows or columns by setting their Resizable properties. 기본적으로 Resizable 속성 값은 열에 대 한 AllowUserToResizeColumns 속성 값 및 행에 대 한 AllowUserToResizeRows 속성 값을 기반으로 합니다.By default, the Resizable property value is based on the AllowUserToResizeColumns property value for columns and the AllowUserToResizeRows property value for rows. 그러나 ResizableTrue 또는 False로 명시적으로 설정 하는 경우 지정 된 값은 해당 행 또는 열에 대 한 컨트롤 값을 재정의 합니다.If you explicitly set Resizable to True or False, however, the specified value overrides the control value is for that row or column. 상속을 복원 하려면 ResizableNotSet로 설정 합니다.Set Resizable to NotSet to restore the inheritance.

NotSet는 값 상속을 복원 하므로 행 또는 열이 DataGridView 컨트롤에 추가 되지 않은 경우 Resizable 속성은 NotSet 값을 반환 하지 않습니다.Because NotSet restores the value inheritance, the Resizable property will never return a NotSet value unless the row or column has not been added to a DataGridView control. 행 또는 열의 Resizable 속성 값이 상속 되는지 여부를 확인 해야 하는 경우 해당 State 속성을 검사 합니다.If you need to determine whether the Resizable property value of a row or column is inherited, examine its State property. State 값에 ResizableSet 플래그가 포함 된 경우 Resizable 속성 값이 상속 되지 않습니다.If the State value includes the ResizableSet flag, the Resizable property value is not inherited.

자동 크기 조정Automatic Sizing

DataGridView 컨트롤에는 열 채우기 모드와 내용 기반 자동 크기 조정의 두 가지 자동 크기 조정 기능이 있습니다.There are two kinds of automatic sizing in the DataGridView control: column fill mode and content-based automatic sizing.

열 채우기 모드를 설정 하면 컨트롤의 표시 되는 열이 컨트롤의 표시 영역 너비를 채웁니다.Column fill mode causes the visible columns in the control to fill the width of the control's display area. 이 모드에 대 한 자세한 내용은 Windows Forms DataGridView 컨트롤의 열 채우기 모드를 참조 하세요.For more information about this mode, see Column Fill Mode in the Windows Forms DataGridView Control.

행, 열 및 머리글을 구성 하 여 셀 내용에 맞게 크기를 자동으로 조정할 수도 있습니다.You can also configure rows, columns, and headers to automatically adjust their sizes to fit their cell contents. 이 경우 셀 내용이 변경 될 때마다 크기 조정이 발생 합니다.In this case, size adjustment occurs whenever cell contents change.

참고

가상 모드를 사용 하 여 사용자 지정 데이터 캐시에서 셀 값을 유지 하는 경우 자동 크기 조정은 사용자가 셀 값을 편집할 때 발생 하지만 CellValuePushed 이벤트 처리기 외부에서 캐시 된 값을 변경할 경우에는 발생 하지 않습니다.If you maintain cell values in a custom data cache using virtual mode, automatic sizing occurs when the user edits a cell value but does not occur when you alter a cached value outside of a CellValuePushed event handler. 이 경우 UpdateCellValue 메서드를 호출 하 여 컨트롤이 셀 표시를 업데이트 하 고 현재 자동 크기 조정 모드를 적용 하도록 합니다.In this case, call the UpdateCellValue method to force the control to update the cell display and apply the current automatic sizing modes.

한 차원에 대해서만 내용 기반 자동 크기 조정을 사용 하는 경우, 즉 행은 제외 하 고 행은 제외 하 고 WrapMode 사용 하도록 설정 된 경우에도 다른 차원이 변경 될 때마다 크기 조정도 발생 합니다.If content-based automatic sizing is enabled for one dimension only—that is, for rows but not columns, or for columns but not rows—and WrapMode is also enabled, size adjustment also occurs whenever the other dimension changes. 예를 들어 열이 아닌 행에 자동 크기 조정을 구성 하 고 WrapMode 사용 하도록 설정 하면 사용자는 열 구분선을 끌어 열 너비를 변경할 수 있으며 행 높이가 자동으로 조정 되어 셀 내용이 완전히 표시 됩니다.For example, if rows but not columns are configured for automatic sizing and WrapMode is enabled, users can drag column dividers to change the width of a column and row heights will automatically adjust so that cell contents are still fully displayed.

내용 기반 자동 크기 조정에 대 한 행과 열을 모두 구성 하 고 WrapMode 사용 하도록 설정 된 경우, DataGridView 컨트롤은 셀 내용이 변경 될 때마다 크기를 조정 하 고 새 크기를 계산할 때 이상적인 셀 높이-너비 비율을 사용 합니다.If you configure both rows and columns for content-based automatic sizing and WrapMode is enabled, the DataGridView control will adjust sizes whenever cell contents changed and will use an ideal cell height-to-width ratio when calculating new sizes.

헤더 및 행에 대 한 크기 조정 모드를 구성 하 고 컨트롤 값을 재정의 하지 않는 열에 대해 다음 DataGridView 속성 중 하나 이상을 설정 합니다.To configure the sizing mode for headers and rows and for columns that do not override the control value, set one or more of the following DataGridView properties:

개별 열에 대 한 컨트롤의 열 크기 조정 모드를 재정의 하려면 해당 AutoSizeMode 속성을 NotSet이외의 값으로 설정 합니다.To override the control's column sizing mode for an individual column, set its AutoSizeMode property to a value other than NotSet. 열의 크기 조정 모드는 실제로 해당 InheritedAutoSizeMode 속성에 의해 결정 됩니다.The sizing mode for a column is actually determined by its InheritedAutoSizeMode property. 이 속성의 값은 해당 값을 NotSet하지 않는 한 열의 AutoSizeMode 속성 값을 기반으로 하며,이 경우 컨트롤의 AutoSizeColumnsMode 값이 상속 됩니다.The value of this property is based on the column's AutoSizeMode property value unless that value is NotSet, in which case the control's AutoSizeColumnsMode value is inherited.

많은 양의 데이터로 작업할 때 내용 기반 자동 크기 조정을 사용 합니다.Use content-based automatic resizing with caution when working with large amounts of data. 성능 저하를 방지 하려면 컨트롤의 모든 행을 분석 하는 대신 표시 된 행만을 기준으로 크기를 계산 하는 자동 크기 조정 모드를 사용 합니다.To avoid performance penalties, use the automatic sizing modes that calculate sizes based only on the displayed rows rather than analyzing every row in the control. 최대 성능을 위해 새 데이터를 로드 한 직후와 같이 특정 시간에 크기를 조정할 수 있도록 프로그래밍 방식의 크기 조정을 대신 사용 합니다.For maximum performance, use programmatic resizing instead so that you can resize at specific times, such as immediately after new data is loaded.

내용 기반 자동 크기 조정 모드는 행 이나 열 Visible 속성 또는 컨트롤 RowHeadersVisible 또는 ColumnHeadersVisible 속성을 false설정 하 여 숨긴 행, 열 또는 헤더에 영향을 주지 않습니다.Content-based automatic sizing modes do not affect rows, columns, or headers that you have hidden by setting the row or column Visible property or the control RowHeadersVisible or ColumnHeadersVisible properties to false. 예를 들어 큰 셀 값에 맞게 자동으로 크기를 조정 하 여 열을 숨긴 경우 큰 셀 값을 포함 하는 행이 삭제 되 면 숨겨진 열의 크기가 변경 되지 않습니다.For example, if a column is hidden after it is automatically sized to fit a large cell value, the hidden column will not change its size if the row containing the large cell value is deleted. 표시 유형이 변경 되는 경우 자동 크기 조정이 발생 하지 않으므로 열 Visible 속성을 다시 true 변경 하면 현재 내용에 따라 크기가 다시 계산 되지 않습니다.Automatic sizing does not occur when visibility changes, so changing the column Visible property back to true will not force it to recalculate its size based on its current contents.

프로그래밍 방식의 내용 기반 크기 조정은 표시 여부와 관계 없이 행, 열 및 헤더에 영향을 줍니다.Programmatic content-based resizing affects rows, columns, and headers regardless of their visibility.

프로그래밍 방식 크기 조정Programmatic Resizing

자동 크기 조정을 사용 하지 않도록 설정 된 경우 다음 속성을 통해 행, 열 또는 머리글의 정확한 너비나 높이를 프로그래밍 방식으로 설정할 수 있습니다.When automatic sizing is disabled, you can programmatically set the exact width or height of rows, columns, or headers through the following properties:

다음 메서드를 사용 하 여 프로그래밍 방식으로 행, 열 및 머리글의 크기를 조정 하 여 해당 내용에 맞출 수도 있습니다.You can also programmatically resize rows, columns, and headers to fit their contents using the following methods:

이러한 메서드는 연속 크기 조정을 위해 행, 열 또는 헤더를 구성 하는 대신 한 번만 크기를 조정 합니다.These methods will resize rows, columns, or headers once rather than configuring them for continuous resizing. 새 크기는 자동으로 계산 되어 클리핑 없이 모든 셀 내용을 표시 합니다.The new sizes are automatically calculated to display all cell contents without clipping. 그러나 FillInheritedAutoSizeMode 속성 값이 있는 열의 크기를 프로그래밍 방식으로 조정 하는 경우 계산 된 내용 기반 너비를 사용 하 여 열 FillWeight 속성 값을 비례적으로 조정 하 고, 실제로 열 너비는 모든 열이 컨트롤의 사용 가능한 표시 영역을 채우도록 이러한 새 비율에 따라 계산 됩니다.When you programmatically resize columns that have InheritedAutoSizeMode property values of Fill, however, the calculated content-based widths are used to proportionally adjust the column FillWeight property values, and the actually column widths are then calculated according to these new proportions so that all columns fill the available display area of the control.

연속 크기 조정은 연속 크기 조정으로 성능 저하를 방지 하는 데 유용 합니다.Programmatic resizing is useful to avoid performance penalties with continuous resizing. 사용자가 크기를 조정할 수 있는 행, 열 및 헤더와 열 채우기 모드의 초기 크기를 제공 하는 데도 유용 합니다.It is also useful to provide initial sizes for user-resizable rows, columns, and headers, and for column fill mode.

일반적으로 특정 시간에 프로그래밍 방식의 크기 조정 메서드를 호출 합니다.You will typically call the programmatic resizing methods at specific times. 예를 들어 데이터를 로드 한 직후에 모든 열의 크기를 프로그래밍 방식으로 조정 하거나 특정 셀 값이 수정 된 후 프로그래밍 방식으로 특정 행의 크기를 조정할 수 있습니다.For example, you might programmatically resize all columns immediately after loading data, or you might programmatically resize a specific row after a particular cell value has been modified.

내용 기반 크기 조정 동작 사용자 지정Customizing Content-based Sizing Behavior

파생 된 DataGridView 컨트롤에서 DataGridViewCell.GetPreferredSize, DataGridViewRow.GetPreferredHeight또는 DataGridViewColumn.GetPreferredWidth 메서드를 재정의 하거나 protected 크기 조정 메서드 오버 로드를 호출 하 여 파생 DataGridView 셀, 행 및 열 형식으로 작업할 때 크기 조정 동작을 사용자 지정할 수 있습니다.You can customize sizing behaviors when working with derived DataGridView cell, row, and column types by overriding the DataGridViewCell.GetPreferredSize, DataGridViewRow.GetPreferredHeight, or DataGridViewColumn.GetPreferredWidth methods or by calling protected resizing method overloads in a derived DataGridView control. 보호 되는 크기 조정 메서드 오버 로드는 짝이 되는 셀의 높이와 너비를 조정 하 여 셀이 너무 길거나 긴 셀을 방지 하기 위해 쌍으로 작동 하도록 설계 되었습니다.The protected resizing method overloads are designed to work in pairs to achieve an ideal cell height-to-width ratio, avoiding overly wide or tall cells. 예를 들어 AutoResizeRows 메서드의 AutoResizeRows(DataGridViewAutoSizeRowsMode,Boolean) 오버 로드를 호출 하 고 Boolean 매개 변수에 false 값을 전달 하는 경우 오버 로드는 행의 셀에 대해 이상적인 높이와 너비를 계산 하지만 행 높이도 조정 합니다.For example, if you call the AutoResizeRows(DataGridViewAutoSizeRowsMode,Boolean) overload of the AutoResizeRows method and pass in a value of false for the Boolean parameter, the overload will calculate the ideal heights and widths for cells in the row, but it will adjust the row heights only. 그런 다음 AutoResizeColumns 메서드를 호출 하 여 열 너비를 계산 된 이상적인로 조정 해야 합니다.You must then call the AutoResizeColumns method to adjust the column widths to the calculated ideal.

내용 기반 크기 조정 옵션Content-based Sizing Options

크기 조정 속성 및 메서드에 사용 되는 열거형에는 내용 기반 크기 조정에 대해 유사한 값이 있습니다.The enumerations used by sizing properties and methods have similar values for content-based sizing. 이러한 값을 사용 하 여 기본 크기를 계산 하는 데 사용 되는 셀을 제한할 수 있습니다.With these values, you can limit which cells are used to calculate the preferred sizes. 모든 크기 조정 열거의 경우 표시 된 셀을 참조 하는 이름의 값은 표시 된 행의 셀에 대 한 계산을 제한 합니다.For all sizing enumerations, values with names that refer to displayed cells limit their calculations to cells in displayed rows. 행을 제외 하면 많은 양의 행으로 작업할 때 성능 저하를 방지 하는 데 유용 합니다.Excluding rows is useful to avoid a performance penalty when you are working with a large quantity of rows. 머리글 또는 nonheader 셀의 셀 값에 대 한 계산을 제한할 수도 있습니다.You can also restrict calculations to cell values in header or nonheader cells.

참고 항목See also