Windows Forms DataGridView 컨트롤의 셀 스타일Cell Styles in the Windows Forms DataGridView Control

DataGridView 컨트롤에 있는 각 셀에는 텍스트 서식, 배경색, 전경색 및 글꼴과 같은 고유한 스타일을 사용할 수 있습니다.Each cell within the DataGridView control can have its own style, such as text format, background color, foreground color, and font. 그러나 일반적으로 여러 셀은 특정 스타일 특성을 공유 합니다.Typically, however, multiple cells will share particular style characteristics.

스타일을 공유 하는 셀 그룹에는 특정 행 또는 열에 있는 모든 셀, 특정 값이 포함 된 모든 셀 또는 컨트롤의 모든 셀이 포함 될 수 있습니다.Groups of cells that share styles may include all cells within particular rows or columns, all cells that contain particular values, or all cells in the control. 이러한 그룹은 겹치기 때문에 각 셀의 스타일 정보를 둘 이상의 위치로 가져올 수 있습니다.Because these groups overlap, each cell may get its styling information from more than one place. 예를 들어, DataGridView 컨트롤의 모든 셀이 동일한 글꼴을 사용 하 고 통화 열의 셀만 통화 형식을 사용 하 고 음수를 사용 하는 통화 셀만 빨강 전경색을 사용 하도록 할 수 있습니다.For example, you may want every cell in a DataGridView control to use the same font, but only cells in currency columns to use currency format, and only currency cells with negative numbers to use a red foreground color.

DataGridViewCellStyle 클래스The DataGridViewCellStyle Class

DataGridViewCellStyle 클래스에는 비주얼 스타일과 관련 된 다음 속성이 포함 되어 있습니다.The DataGridViewCellStyle class contains the following properties related to visual style:

또한이 클래스에는 서식 지정과 관련 된 다음 속성이 포함 됩니다.This class also contains the following properties related to formatting:

이러한 속성 및 다른 셀 스타일 속성에 대 한 자세한 내용은 아래의 참고 항목 DataGridViewCellStyle 섹션에 나열 된 참조 설명서 및 항목을 참조 하십시오.For more information on these properties and other cell-style properties, see the DataGridViewCellStyle reference documentation and the topics listed in the See Also section below.

DataGridViewCellStyle 개체 사용Using DataGridViewCellStyle Objects

DataGridView, DataGridViewCellStyle ,DataGridViewColumn및클래스 의다양한속성및해당파생클래스에서개체를검색할수있습니다.DataGridViewCell DataGridViewRowYou can retrieve DataGridViewCellStyle objects from various properties of the DataGridView, DataGridViewColumn, DataGridViewRow, and DataGridViewCell classes and their derived classes. 이러한 속성 중 하나를 아직 설정 하지 않은 경우 해당 값을 검색 하면 새 DataGridViewCellStyle 개체가 만들어집니다.If one of these properties has not yet been set, retrieving its value will create a new DataGridViewCellStyle object. 또한 사용자 고유의 DataGridViewCellStyle 개체를 인스턴스화하고 이러한 속성에 할당할 수 있습니다.You can also instantiate your own DataGridViewCellStyle objects and assign them to these properties.

DataGridViewCellStyle 여러DataGridView 요소 간에 개체를 공유 하 여 스타일 정보가 불필요 하 게 중복 되는 것을 방지할 수 있습니다.You can avoid unnecessary duplication of style information by sharing DataGridViewCellStyle objects among multiple DataGridView elements. 컨트롤, 열 및 행 수준에서 설정 된 스타일은 각 수준을 셀 수준까지 필터링 하기 때문에 위의 수준과 다른 각 수준의 스타일 속성만 설정 하 여 스타일 중복을 방지할 수도 있습니다.Because the styles set at the control, column, and row levels filter down through each level to the cell level, you can also avoid style duplication by setting only those style properties at each level that differ from the levels above. 이에 대해서는 다음에 나오는 스타일 상속 섹션에서 자세히 설명 합니다.This is described in more detail in the Style Inheritance section that follows.

다음 표에서는 개체를 가져오거나 설정 DataGridViewCellStyle 하는 기본 속성을 보여 줍니다.The following table lists the primary properties that get or set DataGridViewCellStyle objects.

속성Property 클래스Classes DescriptionDescription
DefaultCellStyle DataGridView, DataGridViewColumn,및파생클래스 DataGridViewRowDataGridView, DataGridViewColumn, DataGridViewRow, and derived classes 머리글 셀을 포함 하 여 전체 컨트롤의 모든 셀, 열 또는 행에 사용 되는 기본 스타일을 가져오거나 설정 합니다.Gets or sets default styles used by all cells in the entire control (including header cells), in a column, or in a row.
RowsDefaultCellStyle DataGridView 컨트롤의 모든 행에 사용 되는 기본 셀 스타일을 가져오거나 설정 합니다.Gets or sets default cell styles used by all rows in the control. 머리글 셀은 포함 되지 않습니다.This does not include header cells.
AlternatingRowsDefaultCellStyle DataGridView 컨트롤의 교대로 반복 되는 행에 사용 되는 기본 셀 스타일을 가져오거나 설정 합니다.Gets or sets default cell styles used by alternating rows in the control. 원장과 비슷한 효과를 만드는 데 사용 됩니다.Used to create a ledger-like effect.
RowHeadersDefaultCellStyle DataGridView 컨트롤의 행 머리글에 사용 되는 기본 셀 스타일을 가져오거나 설정 합니다.Gets or sets default cell styles used by the control's row headers. 비주얼 스타일을 사용 하는 경우 현재 테마에 의해 재정의 됩니다.Overridden by the current theme if visual styles are enabled.
ColumnHeadersDefaultCellStyle DataGridView 컨트롤의 열 머리글에 사용 되는 기본 셀 스타일을 가져오거나 설정 합니다.Gets or sets default cell styles used by the control's column headers. 비주얼 스타일을 사용 하는 경우 현재 테마에 의해 재정의 됩니다.Overridden by the current theme if visual styles are enabled.
Style DataGridViewCell및 파생 클래스DataGridViewCell and derived classes 셀 수준에서 지정 된 스타일을 가져오거나 설정 합니다.Gets or sets styles specified at the cell level. 이러한 스타일은 상위 수준에서 상속 된 스타일을 재정의 합니다.These styles override those inherited from higher levels.
InheritedStyle DataGridViewCell, DataGridViewRow,및파생클래스 DataGridViewColumnDataGridViewCell, DataGridViewRow, DataGridViewColumn, and derived classes 상위 수준에서 상속 된 스타일을 포함 하 여 셀, 행 또는 열에 현재 적용 된 스타일을 모두 가져옵니다.Gets all the styles currently applied to the cell, row, or column, including styles inherited from higher levels.

위에서 설명한 것 처럼 속성이 이전에 설정 되지 않은 경우 스타일 속성의 값 DataGridViewCellStyle 을 가져오면 자동으로 새 개체가 인스턴스화됩니다.As mentioned above, getting the value of a style property automatically instantiates a new DataGridViewCellStyle object if the property has not been previously set. 이러한 개체를 불필요 하 게 만드는 것을 방지 하기 위해 행 및 HasDefaultCellStyle 열 클래스에는 DefaultCellStyle 속성이 설정 되었는지 여부를 확인 하는 데 사용할 수 있는 속성이 있습니다.To avoid creating these objects unnecessarily, the row and column classes have a HasDefaultCellStyle property that you can check to determine whether the DefaultCellStyle property has been set. 마찬가지로, 셀 클래스 HasStyle 에는 Style 속성이 설정 되었는지 여부를 나타내는 속성이 있습니다.Similarly, the cell classes have a HasStyle property that indicates whether the Style property has been set.

각 스타일 속성은 DataGridView 컨트롤에 해당 하는 PropertyName Changed 이벤트를 포함 합니다.Each of the style properties has a corresponding PropertyNameChanged event on the DataGridView control. 행, 열 및 셀 속성의 경우Row이벤트의 이름은 "", "Column" 또는 "Cell"로 시작 됩니다 (예: RowDefaultCellStyleChanged).For row, column, and cell properties, the name of the event begins with "Row", "Column", or "Cell" (for example, RowDefaultCellStyleChanged). 이러한 각 이벤트는 해당 스타일 속성이 다른 DataGridViewCellStyle 개체로 설정 된 경우 발생 합니다.Each of these events occurs when the corresponding style property is set to a different DataGridViewCellStyle object. 이러한 이벤트는 스타일 속성에서 개체를 DataGridViewCellStyle 검색 하 고 해당 속성 값을 수정할 때 발생 하지 않습니다.These events do not occur when you retrieve a DataGridViewCellStyle object from a style property and modify its property values. 셀 스타일 개체 자체의 변경 내용에 응답 하려면 CellStyleContentChanged 이벤트를 처리 합니다.To respond to changes to the cell style objects themselves, handle the CellStyleContentChanged event.

스타일 상속Style Inheritance

DataGridViewCell 은 해당 InheritedStyle 속성에서 모양을 가져옵니다.Each DataGridViewCell gets its appearance from its InheritedStyle property. DataGridViewCellStyle 속성에서 반환 되는 개체는 형식의 DataGridViewCellStyle속성 계층에서 해당 값을 상속 합니다.The DataGridViewCellStyle object returned by this property inherits its values from a hierarchy of properties of type DataGridViewCellStyle. 이러한 속성은 머리글이 아닌 셀 InheritedStyle 의가 해당 값을 가져오는 순서 대로 아래에 나열 되어 있습니다.These properties are listed below in the order in which the InheritedStyle for non-header cells obtains its values.

  1. DataGridViewCell.Style

  2. DataGridViewRow.DefaultCellStyle

  3. DataGridView.AlternatingRowsDefaultCellStyle(홀수 인덱스 번호가 있는 행의 셀에만 해당)DataGridView.AlternatingRowsDefaultCellStyle (only for cells in rows with odd index numbers)

  4. DataGridView.RowsDefaultCellStyle

  5. DataGridViewColumn.DefaultCellStyle

  6. DataGridView.DefaultCellStyle

행 및 열 머리글 셀의 경우 속성 InheritedStyle 은 다음 원본 속성 목록에서 지정 된 순서로 값으로 채워집니다.For row and column header cells, the InheritedStyle property is populated by values from the following list of source properties in the given order.

  1. DataGridViewCell.Style

  2. DataGridView.ColumnHeadersDefaultCellStyle 또는 DataGridView.RowHeadersDefaultCellStyleDataGridView.ColumnHeadersDefaultCellStyle or DataGridView.RowHeadersDefaultCellStyle

  3. DataGridView.DefaultCellStyle

다음 다이어그램은이 프로세스를 보여 줍니다.The following diagram illustrates this process.

DataGridViewCellStyle 형식의 속성Properties of type DataGridViewCellStyle

특정 행과 열에 의해 상속 되는 스타일에도 액세스할 수 있습니다.You can also access the styles inherited by specific rows and columns. InheritedStyle 속성은 다음 속성의 값을 상속 합니다.The column InheritedStyle property inherits its values from the following properties.

  1. DataGridViewColumn.DefaultCellStyle

  2. DataGridView.DefaultCellStyle

Row InheritedStyle 속성은 다음 속성에서 해당 값을 상속 합니다.The row InheritedStyle property inherits its values from the following properties.

  1. DataGridViewRow.DefaultCellStyle

  2. DataGridView.AlternatingRowsDefaultCellStyle(홀수 인덱스 번호가 있는 행의 셀에만 해당)DataGridView.AlternatingRowsDefaultCellStyle (only for cells in rows with odd index numbers)

  3. DataGridView.RowsDefaultCellStyle

  4. DataGridView.DefaultCellStyle

속성에서 반환 InheritedStyle 하는 DataGridViewCellStyle 개체의 각 속성에 대해 해당 속성이 DataGridViewCellStyle 클래스 기본값 이외의 값으로 설정 된 적절 한 목록의 첫 번째 셀 스타일에서 속성 값을 가져옵니다.For each property in a DataGridViewCellStyle object returned by an InheritedStyle property, the property value is obtained from the first cell style in the appropriate list that has the corresponding property set to a value other than the DataGridViewCellStyle class defaults.

다음 표에서는 예제 셀의 ForeColor 속성 값이 포함 하는 열에서 상속 되는 방법을 보여 줍니다.The following table illustrates how the ForeColor property value for an example cell is inherited from its containing column.

형식의 속성DataGridViewCellStyleProperty of type DataGridViewCellStyle 검색 ForeColor 한 개체의 예제 값Example ForeColor value for retrieved object
DataGridViewCell.Style Color.Empty
DataGridViewRow.DefaultCellStyle Color.Red
DataGridView.AlternatingRowsDefaultCellStyle Color.Empty
DataGridView.RowsDefaultCellStyle Color.Empty
DataGridViewColumn.DefaultCellStyle Color.DarkBlue
DataGridView.DefaultCellStyle Color.Black

이 경우 Color.Red 셀의 행에 있는 값은 목록의 첫 번째 값입니다.In this case, the Color.Red value from the cell's row is the first real value on the list. 이 값은 ForeColor InheritedStyle셀의 속성 값이 됩니다.This becomes the ForeColor property value of the cell's InheritedStyle.

다음 다이어그램에서는 다양 DataGridViewCellStyle 한 속성이 다른 위치에서 해당 값을 상속 하는 방법을 보여 줍니다.The following diagram illustrates how different DataGridViewCellStyle properties can inherit their values from different places.

DataGridView 속성-값 상속DataGridView property-value inheritance

스타일 상속을 활용 하 여 여러 위치에서 동일한 정보를 지정 하지 않고도 전체 컨트롤에 대 한 적절 한 스타일을 제공할 수 있습니다.By taking advantage of style inheritance, you can provide appropriate styles for the entire control without having to specify the same information in multiple places.

설명 된 대로 머리글 셀이 스타일 상속에 참여 하지만 ColumnHeadersDefaultCellStyle DataGridView 컨트롤의 및 RowHeadersDefaultCellStyle 속성에서 반환 되는 개체에는에서 반환 된 개체의 속성 값을 재정의 하는 초기 속성 값이 있습니다. DefaultCellStyle 속성입니다.Although header cells participate in style inheritance as described, the objects returned by the ColumnHeadersDefaultCellStyle and RowHeadersDefaultCellStyle properties of the DataGridView control have initial property values that override the property values of the object returned by the DefaultCellStyle property. DefaultCellStyle 속성에서 반환 하는 개체에 대해 속성을 설정 하 여 행 및 열 머리글에 적용 하려면 ColumnHeadersDefaultCellStyleRowHeadersDefaultCellStyle 속성이 반환 하는 개체의 해당 속성을 표시 된 기본값으로 설정 해야 합니다. DataGridViewCellStyle 클래스에 대 한입니다.If you want the properties set for the object returned by the DefaultCellStyle property to apply to row and column headers, you must set the corresponding properties of the objects returned by the ColumnHeadersDefaultCellStyle and RowHeadersDefaultCellStyle properties to the defaults indicated for the DataGridViewCellStyle class.

참고

비주얼 스타일을 사용 하는 경우를 제외 TopLeftHeaderCell하 고 행 및 열 머리글은 현재 테마에 따라 자동으로 스타일이 지정 되어 이러한 속성으로 지정 된 스타일을 재정의 합니다.If visual styles are enabled, the row and column headers (except for the TopLeftHeaderCell) are automatically styled by the current theme, overriding any styles specified by these properties.

, 및 형식은 열 속성DefaultCellStyle 에 의해 반환 되는 개체의 일부 값도 초기화 합니다. DataGridViewCheckBoxColumn DataGridViewButtonColumn DataGridViewImageColumnThe DataGridViewButtonColumn, DataGridViewImageColumn, and DataGridViewCheckBoxColumn types also initialize some values of the object returned by the column DefaultCellStyle property. 자세한 내용은 해당 형식에 대 한 참조 설명서를 참조 하세요.For more information, see the reference documentation for these types.

동적으로 스타일 설정Setting Styles Dynamically

특정 값을 사용 하 여 셀 스타일을 사용자 지정 하려면 DataGridView.CellFormatting 이벤트에 대 한 처리기를 구현 합니다.To customize the styles of cells with particular values, implement a handler for the DataGridView.CellFormatting event. 이 이벤트에 대 한 처리기는 DataGridViewCellFormattingEventArgs 형식의 인수를 받습니다.Handlers for this event receive an argument of the DataGridViewCellFormattingEventArgs type. 이 개체에는 DataGridView 컨트롤의 해당 위치와 함께 형식이 지정 되는 셀의 값을 확인할 수 있는 속성이 포함 되어 있습니다.This object contains properties that let you determine the value of the cell being formatted along with its location in the DataGridView control. 또한이 개체는 형식이 CellStyle 지정 되는 셀의 InheritedStyle 속성 값으로 초기화 되는 속성을 포함 합니다.This object also contains a CellStyle property that is initialized to the value of the InheritedStyle property of the cell being formatted. 셀 스타일 속성을 수정 하 여 셀 값 및 위치에 적합 한 스타일 정보를 지정할 수 있습니다.You can modify the cell style properties to specify style information appropriate to the cell value and location.

참고

또한 RowPrePaintRowPostPaint 이벤트는 이벤트 데이터 DataGridViewCellStyle 에서 개체를 수신 하지만, 해당 하는 경우 읽기 전용 용도의 행 InheritedStyle 속성의 복사본 이며, 컨트롤에 영향을 주지 않습니다.The RowPrePaint and RowPostPaint events also receive a DataGridViewCellStyle object in the event data, but in their case, it is a copy of the row InheritedStyle property for read-only purposes, and changes to it do not affect the control.

DataGridView.CellMouseEnter 및 이벤트와 같은 이벤트에 대 한 CellMouseLeave 응답으로 개별 셀의 스타일을 동적으로 수정할 수도 있습니다.You can also dynamically modify the styles of individual cells in response to events such as the DataGridView.CellMouseEnter and CellMouseLeave events. 예를 들어 CellMouseEnter 이벤트 처리기에서 셀의 Style 속성을 통해 검색 되는 셀 배경색의 현재 값을 저장 한 다음 마우스로 가리킬 때 셀을 강조 표시 하는 새 색으로 설정할 수 있습니다.For example, in a handler for the CellMouseEnter event, you could store the current value of the cell background color (retrieved through the cell's Style property), then set it to a new color that will highlight the cell when the mouse hovers over it. CellMouseLeave 이벤트에 대 한 처리기에서 배경색을 원래 값으로 복원할 수 있습니다.In a handler for the CellMouseLeave event, you can then restore the background color to the original value.

참고

특정 스타일 값의 설정 여부에 관계 Style 없이 셀의 속성에 저장 된 값을 캐시 하는 것이 중요 합니다.Caching the values stored in the cell's Style property is important regardless of whether a particular style value is set. 스타일 설정을 일시적으로 바꾸면 원래 "설정 안 함" 상태로 복원 하면 셀이 상위 수준에서 스타일 설정을 상속 하는 것으로 돌아갑니다.If you temporarily replace a style setting, restoring it to its original "not set" state ensures that the cell will go back to inheriting the style setting from a higher level. 스타일이 상속 되었는지 여부에 관계 없이 셀에 적용 되는 실제 스타일을 결정 해야 하는 경우 셀의 InheritedStyle 속성을 사용 합니다.If you need to determine the actual style in effect for a cell regardless of whether the style is inherited, use the cell's InheritedStyle property.

참고자료See also