Zellstile im DataGridView-Steuerelement in Windows FormsCell Styles in the Windows Forms DataGridView Control

Jede Zelle im DataGridView Steuerelement kann über einen eigenen Stil verfügen, z. b. Textformat, Hintergrundfarbe, Vordergrundfarbe und Schriftart.Each cell within the DataGridView control can have its own style, such as text format, background color, foreground color, and font. In der Regel verwenden mehrere Zellen jedoch bestimmte Stilmerkmale.Typically, however, multiple cells will share particular style characteristics.

Gruppen von Zellen, die Stile gemeinsam verwenden, können alle Zellen in bestimmten Zeilen oder Spalten, alle Zellen, die bestimmte Werte enthalten, oder alle Zellen im Steuerelement enthalten.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. Da sich diese Gruppen überschneiden, kann jede Zelle ihre Formatierungsinformationen von mehr als einem Ort erhalten.Because these groups overlap, each cell may get its styling information from more than one place. Beispielsweise können Sie möchten, dass jede Zelle in DataGridView einem Steuerelement dieselbe Schriftart verwendet, aber nur Zellen in Währungs Spalten, um das Währungs Format zu verwenden, und nur Währungs Zellen mit negativen Zahlen, um eine rote Vordergrundfarbe zu verwenden.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.

Die DataGridViewCellStyle-KlasseThe DataGridViewCellStyle Class

Die DataGridViewCellStyle -Klasse enthält die folgenden Eigenschaften, die sich auf den visuellen Stil beziehen:The DataGridViewCellStyle class contains the following properties related to visual style:

Diese Klasse enthält auch die folgenden Eigenschaften im Zusammenhang mit der Formatierung:This class also contains the following properties related to formatting:

Weitere Informationen zu diesen Eigenschaften und anderen Eigenschaften im Zellstil finden Sie in der DataGridViewCellStyle Referenz Dokumentation und in den Themen, die im Abschnitt Siehe auch unten aufgeführt sind.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.

Verwenden von DataGridViewCellStyle-ObjektenUsing DataGridViewCellStyle Objects

Sie können Objekte DataGridViewCellStyle aus verschiedenen Eigenschaften DataGridViewder Klassen, DataGridViewColumn, DataGridViewRowund DataGridViewCell und der abgeleiteten Klassen abrufen.You can retrieve DataGridViewCellStyle objects from various properties of the DataGridView, DataGridViewColumn, DataGridViewRow, and DataGridViewCell classes and their derived classes. Wenn eine dieser Eigenschaften noch nicht festgelegt wurde, wird durch das Abrufen ihres Werts ein neues DataGridViewCellStyle -Objekt erstellt.If one of these properties has not yet been set, retrieving its value will create a new DataGridViewCellStyle object. Sie können auch Ihre eigenen DataGridViewCellStyle Objekte instanziieren und diesen Eigenschaften zuweisen.You can also instantiate your own DataGridViewCellStyle objects and assign them to these properties.

Sie können unnötige Duplizierung von Formatinformationen vermeiden, DataGridViewCellStyle indem Sie- DataGridView Objekte für mehrere Elemente freigeben.You can avoid unnecessary duplication of style information by sharing DataGridViewCellStyle objects among multiple DataGridView elements. Da die auf der Steuerelement-, Spalten-und Zeilenebene festgelegten Stile durch die einzelnen Ebenen auf die Zellen Ebene gefiltert werden, können Sie auch eine duplikatduplizierung vermeiden, indem Sie nur die Stileigenschaften auf jeder Ebene festlegen, die von den oben genannten Ebenen abweicht.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. Dies wird im folgenden Abschnitt im Abschnitt Format Vererbung ausführlicher beschrieben.This is described in more detail in the Style Inheritance section that follows.

In der folgenden Tabelle werden die primären Eigenschaften aufgelistet, die DataGridViewCellStyle -Objekte erhalten oder festlegen.The following table lists the primary properties that get or set DataGridViewCellStyle objects.

EigenschaftProperty KlassenClasses BeschreibungDescription
DefaultCellStyle DataGridView, DataGridViewColumn ,DataGridViewRowund abgeleitete KlassenDataGridView, DataGridViewColumn, DataGridViewRow, and derived classes Ruft Standardformate ab, die von allen Zellen im gesamten Steuerelement (einschließlich der Header Zellen), in einer Spalte oder in einer Zeile verwendet werden, oder legt diese fest.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 Ruft Standard Zellstile ab, die von allen Zeilen im-Steuerelement verwendet werden, oder legt dieseGets or sets default cell styles used by all rows in the control. Dies schließt keine Header Zellen ein.This does not include header cells.
AlternatingRowsDefaultCellStyle DataGridView Ruft die Standardzellen Formate ab, die von wechselnden Zeilen im-Steuerelement verwendet werden.Gets or sets default cell styles used by alternating rows in the control. Wird verwendet, um einen Ledger-ähnlichen Effekt zu erstellen.Used to create a ledger-like effect.
RowHeadersDefaultCellStyle DataGridView Ruft die Standardzellen Stile ab, die von den Zeilen Headern des Steuer Elements verwendet werdenGets or sets default cell styles used by the control's row headers. Wird vom aktuellen Design überschrieben, wenn visuelle Stile aktiviert sind.Overridden by the current theme if visual styles are enabled.
ColumnHeadersDefaultCellStyle DataGridView Ruft die Standardzellen Formate ab, die von den Spalten Headern des Steuer Elements verwendet werden.Gets or sets default cell styles used by the control's column headers. Wird vom aktuellen Design überschrieben, wenn visuelle Stile aktiviert sind.Overridden by the current theme if visual styles are enabled.
Style DataGridViewCellund abgeleitete KlassenDataGridViewCell and derived classes Ruft die auf Zellen Ebene angegebenen Stile ab oder legt Sie fest.Gets or sets styles specified at the cell level. Diese Stile überschreiben diejenigen, die von höheren Ebenen geerbt wurden.These styles override those inherited from higher levels.
InheritedStyle DataGridViewCell, DataGridViewRow ,DataGridViewColumnund abgeleitete KlassenDataGridViewCell, DataGridViewRow, DataGridViewColumn, and derived classes Ruft alle Formate ab, die derzeit auf die Zelle, Zeile oder Spalte angewendet werden, einschließlich der aus höheren Ebenen geerbten Stile.Gets all the styles currently applied to the cell, row, or column, including styles inherited from higher levels.

Wie bereits erwähnt, wird durch das erhalten des Werts einer Style-Eigenschaft automatisch ein neues DataGridViewCellStyle -Objekt instanziiert, wenn die-Eigenschaft nicht zuvor festgelegt wurde.As mentioned above, getting the value of a style property automatically instantiates a new DataGridViewCellStyle object if the property has not been previously set. Um zu vermeiden, dass diese Objekte unnötig erstellt werden, verfügen die Zeilen HasDefaultCellStyle -und Spalten Klassen über eine Eigenschaft, die DefaultCellStyle Sie überprüfen können, um zu bestimmen, ob die Eigenschaft festgelegt wurdeTo 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. Ebenso verfügen die Zell Klassen über eine HasStyle -Eigenschaft, die angibt Style , ob die-Eigenschaft festgelegt wurde.Similarly, the cell classes have a HasStyle property that indicates whether the Style property has been set.

Jede der Stileigenschaften verfügt über ein entsprechendes propertyName Changed -Ereignis für DataGridView das Steuerelement.Each of the style properties has a corresponding PropertyNameChanged event on the DataGridView control. Für Zeilen-, Spalten-und Zell Eigenschaften beginnt der NameRowdes Ereignisses mit "", "Column" oder "Cell" (z RowDefaultCellStyleChanged. b.).For row, column, and cell properties, the name of the event begins with "Row", "Column", or "Cell" (for example, RowDefaultCellStyleChanged). Jedes dieser Ereignisse tritt auf, wenn die entsprechende Style-Eigenschaft auf ein anderes DataGridViewCellStyle Objekt festgelegt ist.Each of these events occurs when the corresponding style property is set to a different DataGridViewCellStyle object. Diese Ereignisse treten nicht auf, wenn Sie ein DataGridViewCellStyle -Objekt aus einer Stil Eigenschaft abrufen und dessen Eigenschaftswerte ändern.These events do not occur when you retrieve a DataGridViewCellStyle object from a style property and modify its property values. Um auf Änderungen an den Zellen Stil Objekten selbst zu reagieren, behandeln CellStyleContentChanged Sie das-Ereignis.To respond to changes to the cell style objects themselves, handle the CellStyleContentChanged event.

StilvererbungStyle Inheritance

Jeder DataGridViewCell erhält seine Darstellung aus seiner InheritedStyle -Eigenschaft.Each DataGridViewCell gets its appearance from its InheritedStyle property. Das DataGridViewCellStyle von dieser Eigenschaft zurückgegebene Objekt erbt seine Werte aus einer Hierarchie von Eigenschaften DataGridViewCellStylevom Typ.The DataGridViewCellStyle object returned by this property inherits its values from a hierarchy of properties of type DataGridViewCellStyle. Diese Eigenschaften sind unten in der Reihenfolge aufgelistet, in InheritedStyle der die für nicht-Header Zellen ihre Werte abrufen.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(nur für Zellen in Zeilen mit ungeraden Indexnummern)DataGridView.AlternatingRowsDefaultCellStyle (only for cells in rows with odd index numbers)

  4. DataGridView.RowsDefaultCellStyle

  5. DataGridViewColumn.DefaultCellStyle

  6. DataGridView.DefaultCellStyle

Für Zeilen-und Spaltenheader Zellen wird InheritedStyle die-Eigenschaft durch Werte aus der folgenden Liste von Quell Eigenschaften in der angegebenen Reihenfolge aufgefüllt.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 oder DataGridView.RowHeadersDefaultCellStyleDataGridView.ColumnHeadersDefaultCellStyle or DataGridView.RowHeadersDefaultCellStyle

  3. DataGridView.DefaultCellStyle

Dieses Verfahren wird im folgenden Diagramm veranschaulicht.The following diagram illustrates this process.

![Eigenschaften des DataGridViewCellStyle] -Datentyps (./media/cell-styles-in-the-windows-forms-datagridview-control/datagridviewcells-inheritance-diagram.gif "DataGridViewCells-Vererbungs Diagramm")Properties of type DataGridViewCellStyle

Sie können auch auf die Stile zugreifen, die von bestimmten Zeilen und Spalten geerbt wurden.You can also access the styles inherited by specific rows and columns. Die Column InheritedStyle -Eigenschaft erbt ihre Werte von den folgenden Eigenschaften.The column InheritedStyle property inherits its values from the following properties.

  1. DataGridViewColumn.DefaultCellStyle

  2. DataGridView.DefaultCellStyle

Die Row InheritedStyle -Eigenschaft erbt ihre Werte von den folgenden Eigenschaften.The row InheritedStyle property inherits its values from the following properties.

  1. DataGridViewRow.DefaultCellStyle

  2. DataGridView.AlternatingRowsDefaultCellStyle(nur für Zellen in Zeilen mit ungeraden Indexnummern)DataGridView.AlternatingRowsDefaultCellStyle (only for cells in rows with odd index numbers)

  3. DataGridView.RowsDefaultCellStyle

  4. DataGridView.DefaultCellStyle

Für jede Eigenschaft in einem DataGridViewCellStyle -Objekt, das InheritedStyle von einer-Eigenschaft zurückgegeben wird, wird der-Eigenschafts Wert aus dem ersten Zellstil in der entsprechenden Liste abgerufen, bei dem die DataGridViewCellStyle entsprechende-Eigenschaft auf einen anderen Wert als die-Klasse festgelegt ist.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.

In der folgenden Tabelle wird veranschaulicht ForeColor , wie der Eigenschafts Wert für eine Beispiel Zelle von der enthaltenden Spalte geerbt wird.The following table illustrates how the ForeColor property value for an example cell is inherited from its containing column.

Eigenschaft vom TypDataGridViewCellStyleProperty of type DataGridViewCellStyle Beispiel ForeColor Wert für abgerufene ObjekteExample 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

In diesem Fall ist der Color.Red Wert aus der Zeile der Zelle der erste reale Wert in der Liste.In this case, the Color.Red value from the cell's row is the first real value on the list. Dies wird ForeColor zum Eigenschafts Wert der InheritedStyleZelle.This becomes the ForeColor property value of the cell's InheritedStyle.

Im folgenden Diagramm wird veranschaulicht, DataGridViewCellStyle wie verschiedene Eigenschaften ihre Werte von unterschiedlichen Stellen erben können.The following diagram illustrates how different DataGridViewCellStyle properties can inherit their values from different places.

Vererbung von DataGridView-Eigenschafts-WertenDataGridView property-value inheritance

Durch die Nutzung der Stil Vererbung können Sie geeignete Stile für das gesamte Steuerelement bereitstellen, ohne die gleichen Informationen an mehreren Stellen angeben zu müssen.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.

Obwohl Header Zellen wie beschrieben an der Stil Vererbung beteiligt sind, verfügen die ColumnHeadersDefaultCellStyle von RowHeadersDefaultCellStyle der-Eigenschaft DataGridView und der-Eigenschaft des Steuer Elements zurückgegebenen Objekte über anfängliche Eigenschaftswerte, die die Eigenschaftswerte des Objekts überschreiben, die DefaultCellStyle -Eigenschaft.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. Wenn Sie möchten, dass die Eigenschaften für das von der DefaultCellStyle -Eigenschaft zurückgegebene-Objekt auf Zeilen-und Spaltenheader angewendet werden, müssen Sie die entsprechenden Eigenschaften der von der RowHeadersDefaultCellStyle ColumnHeadersDefaultCellStyle -Eigenschaft und der-Eigenschaft zurückgegebenen Objekte auf die festgelegten Standardwerte festlegen. für die DataGridViewCellStyle -Klasse.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.

Hinweis

Wenn visuelle Stile aktiviert sind, werden die Zeilen-und Spaltenheader (mit TopLeftHeaderCellAusnahme von) automatisch durch das aktuelle Design formatiert, wobei alle von diesen Eigenschaften angegebenen Stile überschrieben werden.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.

Die DataGridViewButtonColumnTypen, und DataGridViewCheckBoxColumn Initialisieren auch einige Werte des-Objekts, DataGridViewImageColumndas von der Column DefaultCellStyle -Eigenschaft zurückgegeben wird.The DataGridViewButtonColumn, DataGridViewImageColumn, and DataGridViewCheckBoxColumn types also initialize some values of the object returned by the column DefaultCellStyle property. Weitere Informationen finden Sie in der Referenz Dokumentation für diese Typen.For more information, see the reference documentation for these types.

Dynamisches Festlegen von StilenSetting Styles Dynamically

Implementieren Sie zum Anpassen der Stile von Zellen mit bestimmten Werten einen Handler für das DataGridView.CellFormatting -Ereignis.To customize the styles of cells with particular values, implement a handler for the DataGridView.CellFormatting event. Handler für dieses Ereignis erhalten ein Argument vom DataGridViewCellFormattingEventArgs Typ.Handlers for this event receive an argument of the DataGridViewCellFormattingEventArgs type. Dieses Objekt enthält Eigenschaften, mit denen Sie den Wert der zu formatierenden Zelle sowie deren Position im DataGridView -Steuerelement bestimmen können.This object contains properties that let you determine the value of the cell being formatted along with its location in the DataGridView control. Dieses Objekt enthält auch eine CellStyle -Eigenschaft, die mit dem Wert InheritedStyle der-Eigenschaft der zu formatierenden Zelle initialisiert wird.This object also contains a CellStyle property that is initialized to the value of the InheritedStyle property of the cell being formatted. Sie können die Eigenschaften des Zellstils ändern, um Stil Informationen anzugeben, die für den Zellwert und den Speicherort geeignet sind.You can modify the cell style properties to specify style information appropriate to the cell value and location.

Hinweis

Das RowPrePaint - RowPostPaint Ereignis und das- DataGridViewCellStyle Ereignis erhalten ebenfalls ein-Objekt in den Ereignisdaten, aber in Ihrem Fall ist es eine InheritedStyle Kopie der Zeilen Eigenschaft für schreibgeschützte Zwecke, und Änderungen an der-Methode wirken sich nicht auf das-Steuerelement aus.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.

Sie können auch die Stile einzelner Zellen dynamisch ändern, als Reaktion auf Ereignisse wie das- DataGridView.CellMouseEnter Ereignis CellMouseLeave und das-Ereignis.You can also dynamically modify the styles of individual cells in response to events such as the DataGridView.CellMouseEnter and CellMouseLeave events. Beispielsweise könnten Sie in einem Handler für CellMouseEnter das-Ereignis den aktuellen Wert der Zellen Hintergrundfarbe (abgerufen durch die- Style Eigenschaft der Zelle) speichern und dann eine neue Farbe festlegen, die die Zelle hervorhebt, wenn der Mauszeiger darüber bewegt wird.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. In einem Handler für das CellMouseLeave -Ereignis können Sie dann die Hintergrundfarbe für den ursprünglichen Wert wiederherstellen.In a handler for the CellMouseLeave event, you can then restore the background color to the original value.

Hinweis

Das Zwischenspeichern der in der- Style Eigenschaft der Zelle gespeicherten Werte ist wichtig, unabhängig davon, ob ein bestimmter Stilwert festgelegt ist.Caching the values stored in the cell's Style property is important regardless of whether a particular style value is set. Wenn Sie eine Formatvorlage temporär ersetzen, wird durch die Wiederherstellung in den ursprünglichen Zustand "nicht festgelegt" sichergestellt, dass die Zelle zurück wechselt, um die Stil Einstellung von einer höheren Ebene zu erben.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. Wenn Sie den tatsächlichen Stil für eine Zelle ermitteln müssen, unabhängig davon, ob der Stil geerbt wird, verwenden Sie die- InheritedStyle Eigenschaft der Zelle.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.

Siehe auchSee also