Windows フォーム 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クラスには、次の visual スタイルに関連するプロパティが含まれています。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

取得することができますDataGridViewCellStyleオブジェクトのさまざまなプロパティから、 DataGridViewDataGridViewColumnDataGridViewRow、およびDataGridViewCellクラスとその派生クラス。You 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 説明Description
DefaultCellStyle DataGridViewDataGridViewColumnDataGridViewRow、および派生クラスDataGridView, 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. Visual スタイルが有効になっている場合に、現在のテーマでオーバーライドされます。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. Visual スタイルが有効になっている場合に、現在のテーマでオーバーライドされます。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 DataGridViewCellDataGridViewRowDataGridViewColumn、および派生クラスDataGridViewCell, 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.

各スタイル プロパティが、対応するPropertyName Changed上のイベント、DataGridViewコントロール。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

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

各プロパティについて、DataGridViewCellStyleによって返されるオブジェクトをInheritedStyleプロパティ、プロパティの値は以外の値に設定した対応するプロパティを持つ、該当する一覧で、最初のセル スタイルから取得した、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.

によって返されるオブジェクトの説明に従って、ヘッダー セルはスタイルの継承に参加が、ColumnHeadersDefaultCellStyleRowHeadersDefaultCellStyleのプロパティ、DataGridViewコントロールによって返されるオブジェクトのプロパティ値を上書きするプロパティの初期値があります。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.

注意

Visual スタイルが有効な場合、行および列ヘッダー (以外の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.

DataGridViewButtonColumnDataGridViewImageColumn、およびDataGridViewCheckBoxColumn型の列によって返されるオブジェクトのいくつかの値も初期化DefaultCellStyleプロパティ。The 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.CellMouseEnterCellMouseLeaveイベント。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