Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Jede Zelle im DataGridView-Steuerelement kann einen eigenen Stil haben, z. B. für Textformat, Hintergrundfarbe, Vordergrundfarbe und Schriftart. In der Regel haben jedoch mehrere Zellen bestimmte Stilmerkmale gemeinsam.
Gruppen von Zellen mit gemeinsamen Stilen können alle Zellen in bestimmten Zeilen oder Spalten, alle Zellen mit bestimmten Werten oder alle Zellen im Steuerelement umfassen. Da sich diese Gruppen überlappen, kann jede Zelle ihre Stilinformationen von mehreren Stellen erhalten. Möglicherweise möchten Sie z. B., dass alle Zellen in einem DataGridView-Steuerelement die gleiche Schriftart aufweisen, aber nur Zellen in Währungsspalten das Währungsformat enthalten und nur Währungszellen mit negativen Zahlen eine rote Vordergrundfarbe haben.
Die DataGridViewCellStyle-Klasse
Die DataGridViewCellStyle-Klasse enthält die folgenden Eigenschaften im Zusammenhang mit visuellem Stil:
Diese Klasse enthält auch die folgenden Eigenschaften im Zusammenhang mit der Formatierung:
Weitere Informationen zu diesen Eigenschaften und anderen Zellenstileigenschaften finden Sie in der Referenzdokumentation zu DataGridViewCellStyle und in den Themen, die im nachstehenden Abschnitt „Weitere Informationen“ aufgeführt sind.
Verwenden von DataGridViewCellStyle-Objekten
Sie können DataGridViewCellStyle-Objekte aus verschiedenen Eigenschaften der Klassen DataGridView, DataGridViewColumn, DataGridViewRow und DataGridViewCell und ihren abgeleiteten Klassen abrufen. Wenn eine dieser Eigenschaften noch nicht festgelegt wurde, erstellt das Abrufen des Werts ein neues DataGridViewCellStyle-Objekt. Sie können auch eigene DataGridViewCellStyle-Objekte instanziieren und sie diesen Eigenschaften zuweisen.
Sie können die unnötige Duplizierung von Stilinformationen vermeiden, indem Sie DataGridViewCellStyle-Objekte für mehrere DataGridView-Elemente freigeben. Da die auf Steuerelement-, Spalten- und Zeilenebene festgelegten Stile durch jede Ebene bis zur Zellebene gefiltert werden, können Sie die Duplizierung von Stilen auch vermeiden, indem Sie auf jeder Ebene nur die Stileigenschaften festlegen, die sich von den darüber liegenden Ebenen unterscheiden. Dies wird im folgenden Abschnitt „Stilvererbung“ ausführlicher beschrieben.
In der folgenden Tabelle sind die primären Eigenschaften zum Abrufen oder Festlegen von DataGridViewCellStyle-Objekten aufgeführt.
| Eigentum | Klassen | BESCHREIBUNG |
|---|---|---|
DefaultCellStyle |
DataGridView, DataGridViewColumn, DataGridViewRow und abgeleitete Klassen | Dient zum Abrufen oder Festlegen von Standardstilen für alle Zellen im gesamten Steuerelement (einschließlich Kopfzeilenzellen), in einer Spalte oder einer Zeile. |
| RowsDefaultCellStyle | DataGridView | Dient zum Abrufen oder Festlegen von Standardzellenstilen für alle Zeilen im Steuerelement. Dies gilt nicht für Kopfzeilenzellen. |
| AlternatingRowsDefaultCellStyle | DataGridView | Dient zum Abrufen oder Festlegen von Standardzellenstilen für alternierende Zeilen im Steuerelement. Wird verwendet, um einen buchhaltungsähnlichen Effekt zu erzeugen. |
| RowHeadersDefaultCellStyle | DataGridView | Dient zum Abrufen oder Festlegen von Standardzellenstilen für die Zeilenüberschriften des Steuerelements. Wird vom aktuellen Design überschrieben, wenn visuelle Stile aktiviert sind. |
| ColumnHeadersDefaultCellStyle | DataGridView | Dient zum Abrufen oder Festlegen von Standardzellenstilen für die Spaltenüberschriften des Steuerelements. Wird vom aktuellen Design überschrieben, wenn visuelle Stile aktiviert sind. |
| Style | DataGridViewCell und abgeleitete Klassen | Dient zum Abrufen oder Festlegen von Stilen, die auf Zellenebene angegeben sind. Diese Stile überschreiben diejenigen, die von höheren Ebenen geerbt wurden. |
InheritedStyle |
DataGridViewCell, DataGridViewRow, DataGridViewColumn und abgeleitete Klassen | Dient zum Abrufen aller Stile, die derzeit auf die Zelle, Zeile oder Spalte angewendet werden, einschließlich der von höheren Ebenen geerbten Stile. |
Wie bereits erwähnt, wird beim Abrufen des Werts einer Stileigenschaft automatisch ein neues DataGridViewCellStyle-Objekt instanziiert, wenn die Eigenschaft nicht zuvor festgelegt wurde. Um die Erstellung dieser Objekte unnötig zu vermeiden, verfügen die Zeilen- und Spaltenklassen über eine HasDefaultCellStyle Eigenschaft, die Sie überprüfen können, um zu bestimmen, ob die DefaultCellStyle-Eigenschaft festgelegt wurde. Ebenso weisen die Zellklassen eine HasStyle-Eigenschaft auf, die angibt, ob die Style-Eigenschaft festgelegt wurde.
Jede der Stileigenschaften hat für das -Steuerelement ein entsprechendes ChangedDataGridView-Ereignis. Bei Zeilen-, Spalten- und Zelleigenschaften beginnt der Name des Ereignisses mit "Row", "Column" oder "Cell" (z. B. RowDefaultCellStyleChanged). Jede dieser Ereignisse tritt auf, wenn die entsprechende Stileigenschaft auf ein anderes DataGridViewCellStyle-Objekt festgelegt ist. Diese Ereignisse treten nicht auf, wenn Sie ein Objekt vom Typ DataGridViewCellStyle aus einer Stileigenschaft abrufen und dessen Eigenschaftswerte ändern. Um auf Änderungen an den Zellenstilobjekten selbst zu reagieren, behandeln Sie das CellStyleContentChanged-Ereignis.
Stilvererbung
Jede DataGridViewCell ruft ihre Darstellung aus ihrer InheritedStyle-Eigenschaft ab. Das von dieser Eigenschaft zurückgegebene DataGridViewCellStyle-Objekt erbt seine Werte von einer Hierarchie von Eigenschaften des Typs DataGridViewCellStyle. Diese Eigenschaften sind im Folgenden in der Reihenfolge aufgeführt, in der die InheritedStyle für Nicht-Kopfzeilenzellen ihre Werte erhalten.
DataGridView.AlternatingRowsDefaultCellStyle (nur für Zellen in Zeilen mit ungeraden Indexnummern)
Bei Zeilen- und Spaltenüberschriftenzellen wird die eigenschaft InheritedStyle durch Werte aus der folgenden Liste der Quelleigenschaften in der angegebenen Reihenfolge aufgefüllt.
Das folgende Diagramm veranschaulicht diesen Prozess.
Sie können auch auf die Stile zugreifen, die von bestimmten Zeilen und Spalten geerbt werden. Die Eigenschaft der Spalte InheritedStyle erbt ihre Werte von den folgenden Eigenschaften.
Die InheritedStyle-Eigenschaft der Zeile erbt ihre Werte von den folgenden Eigenschaften.
DataGridView.AlternatingRowsDefaultCellStyle (nur für Zellen in Zeilen mit ungeraden Indexnummern)
Für jede Eigenschaft in einem DataGridViewCellStyle-Objekt, das von einer InheritedStyle-Eigenschaft zurückgegeben wird, wird der Eigenschaftswert anhand des ersten Zellenstils in der entsprechenden Liste ermittelt, für den die entsprechende Eigenschaft auf einen anderen Wert als die Standardeinstellungen für die DataGridViewCellStyle-Klasse festgelegt wurde.
Die folgende Tabelle veranschaulicht, wie der Wert der ForeColor-Eigenschaft für eine Beispielzelle von ihrer enthaltenen Spalte geerbt wird.
Eigenschaft des Typs DataGridViewCellStyle |
Beispiel des Werts ForeColor für abgerufenes Objekt |
|---|---|
| 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 in der Zeile der Zelle der erste reale Wert in der Liste. Dieser wird zum Wert der ForeColor-Eigenschaft des InheritedStyle der Zelle.
Das folgende Diagramm veranschaulicht, wie unterschiedliche DataGridViewCellStyle Eigenschaften ihre Werte an unterschiedlichen Stellen erben können.
Indem Sie die Stilvererbung nutzen, können Sie geeignete Stile für das gesamte Steuerelement bereitstellen, ohne dieselben Informationen mehrfach angeben zu müssen.
Obwohl Kopfzeilenzellen wie beschrieben an der Stilvererbung teilnehmen, haben die von den Eigenschaften ColumnHeadersDefaultCellStyle und RowHeadersDefaultCellStyle des DataGridView-Steuerelements zurückgegebenen Objekte anfängliche Eigenschaftswerte, die die Eigenschaftswerte des von der DefaultCellStyle-Eigenschaft zurückgegebenen Objekts überschreiben. Wenn Sie möchten, dass die für das von der DefaultCellStyle-Eigenschaft zurückgegebene Objekt festgelegten Eigenschaften auf Zeilen- und Spaltenüberschriften angewendet werden, müssen Sie die entsprechenden Eigenschaften der Objekte, die von den ColumnHeadersDefaultCellStyle- und RowHeadersDefaultCellStyle-Eigenschaften zurückgegeben werden, auf die für die Klasse DataGridViewCellStyle angegebenen Standardwerte setzen.
Hinweis
Wenn visuelle Stile aktiviert sind, werden die Zeilen- und Spaltenkopfzeilen (mit Ausnahme von TopLeftHeaderCell) automatisch mit dem aktuellen Design versehen und überschreiben alle durch diese Eigenschaften festgelegten Stile.
Die Typen DataGridViewButtonColumn, DataGridViewImageColumn und DataGridViewCheckBoxColumn initialisieren auch einige Werte des Objekts, das von der DefaultCellStyle-Eigenschaft der Spalte zurückgegeben wird. Weitere Informationen finden Sie in der Referenzdokumentation für diese Typen.
Dynamisches Festlegen von Stilen
Um die Stile von Zellen mit bestimmten Werten anzupassen, implementieren Sie einen Handler für das DataGridView.CellFormatting-Ereignis. Handler für dieses Ereignis erhalten ein Argument des Typs DataGridViewCellFormattingEventArgs. Dieses Objekt enthält Eigenschaften, mit denen Sie den Wert der zu formatierenden Zelle sowie ihre Position im DataGridView-Steuerelement bestimmen können. Dieses Objekt enthält auch eine CellStyle-Eigenschaft, die mit dem Wert der InheritedStyle-Eigenschaft der zu formatierenden Zelle initialisiert wird. Sie können die Zellenstileigenschaften so ändern, dass Stilinformationen für Wert und Position der Zelle angegeben werden.
Hinweis
Die Ereignisse RowPrePaint und RowPostPaint erhalten ebenfalls ein DataGridViewCellStyle-Objekt in den Ereignisdaten. Aber in ihrem Fall handelt es sich um eine Kopie der InheritedStyle-Eigenschaft der Zeile, die nur zu Lesezwecken dient. Änderungen daran haben keine Auswirkungen auf das Steuerelement.
Sie können die Stile einzelner Zellen auch dynamisch als Reaktion auf Ereignisse wie DataGridView.CellMouseEnter und CellMouseLeave ändern. Beispielsweise können Sie in einem Handler für das CellMouseEnter-Ereignis die aktuelle Hintergrundfarbe der Zelle speichern (abgerufen durch die Style-Eigenschaft der Zelle) und sie dann auf eine neue Farbe setzen, die die Zelle hervorhebt, wenn die Maus darüber fährt. In einem Handler für das CellMouseLeave-Ereignis können Sie dann die Hintergrundfarbe auf den ursprünglichen Wert wiederherstellen.
Hinweis
Das Zwischenspeichern der Werte, die in der Style-Eigenschaft der Zelle gespeichert sind, ist wichtig, unabhängig davon, ob ein bestimmter Stilwert festgelegt ist. Wenn Sie eine Stileinstellung vorübergehend ersetzen, sorgt das Wiederherstellen des ursprünglichen Zustands „Nicht festgelegt“ dafür, dass die Zelle wieder die Stileinstellung von einer höheren Ebene erbt. Wenn Sie den tatsächlichen Stil einer Zelle bestimmen müssen, unabhängig davon, ob der Stil geerbt wird, verwenden Sie die InheritedStyle-Eigenschaft der Zelle.
Siehe auch
- DataGridView
- DataGridViewCellStyle
- DataGridView.AlternatingRowsDefaultCellStyle
- DataGridView.ColumnHeadersDefaultCellStyle
- DataGridView.DefaultCellStyle
- DataGridView.RowHeadersDefaultCellStyle
- DataGridView.RowsDefaultCellStyle
- DataGridViewBand.InheritedStyle
- DataGridViewRow.InheritedStyle
- DataGridViewColumn.InheritedStyle
- DataGridViewBand.DefaultCellStyle
- DataGridViewCell.InheritedStyle
- DataGridViewCell.Style
- DataGridView.CellFormatting
- DataGridView.CellStyleContentChanged
- DataGridView.RowPrePaint
- DataGridView.RowPostPaint
- Grundlegende Formatierungen und Formate im DataGridView-Steuerelement in Windows Forms
- Gewusst wie: Festlegen von Standardzellenformaten für das DataGridView-Steuerelement in Windows Forms
- Datenformatierung im DataGridView-Steuerelement in Windows Forms
.NET Desktop feedback