Spaltentypen im DataGridView-Steuerelement in Windows Forms

Das DataGridView-Steuerelement verwendet mehrere Spaltentypen, um seine Informationen anzuzeigen und dem Benutzer die Möglichkeit zu geben, Informationen zu ändern oder hinzuzufügen.

Wenn Sie ein DataGridView-Steuerelement binden und die AutoGenerateColumns-Eigenschaft auf true festlegen, werden Spalten automatisch unter Verwendung von Standardspaltentypen generiert, die für die in der gebundenen Datenquelle enthaltenen Datentypen geeignet sind.

Sie können auch selbst Instanzen einer der Spaltenklassen erstellen und sie der Sammlung hinzufügen, die von der Columns-Eigenschaft zurückgegeben wird. Sie können diese Instanzen zur Verwendung als ungebundene Spalten erstellen oder sie manuell binden. Manuell gebundene Spalten sind z. B. nützlich, wenn Sie eine automatisch generierte Spalte eines Typs durch eine Spalte eines anderen Typs ersetzen möchten.

In der folgenden Tabelle werden die verschiedenen Spaltenklassen beschrieben, die für die Verwendung im DataGridView-Steuerelement zur Verfügung stehen.

Klasse BESCHREIBUNG
DataGridViewTextBoxColumn Wird mit textbasierten Werten verwendet. Wird automatisch generiert, wenn eine Bindung an Zahlen und Zeichenfolgen erfolgt.
DataGridViewCheckBoxColumn Wird mit Boolean- und CheckState-Werten verwendet. Wird automatisch generiert, wenn eine Bindung an diese Typen erfolgt.
DataGridViewImageColumn Wird verwendet, um Bilder anzuzeigen. Wird automatisch generiert, wenn eine Bindung an Bytearrays, Image- oder Icon-Objekte erfolgt.
DataGridViewButtonColumn Wird verwendet, um Schaltflächen in Zellen anzuzeigen. Wird beim Herstellen der Bindung nicht automatisch generiert. Wird in der Regel als ungebundene Spalten verwendet.
DataGridViewComboBoxColumn Wird verwendet, um Dropdownlisten in Zellen anzuzeigen. Wird beim Herstellen der Bindung nicht automatisch generiert. Normalerweise werden Daten manuell gebunden.
DataGridViewLinkColumn Wird verwendet, um Links in Zellen anzuzeigen. Wird beim Herstellen der Bindung nicht automatisch generiert. Normalerweise werden Daten manuell gebunden.
Ihr benutzerdefinierter Spaltentyp Sie können Ihre eigene Spaltenklasse erstellen, indem Sie die DataGridViewColumn-Klasse oder eine ihrer abgeleiteten Klassen erben, um ein benutzerdefiniertes Aussehen, Verhalten oder gehostete Steuerelemente bereitzustellen. Weitere Informationen finden Sie unter Vorgehensweise: Anpassen von Zellen und Spalten im DataGridView-Steuerelement in Windows Forms durch Erweitern von Aussehen und Verhalten.

In den folgenden Abschnitten werden diese Spaltentypen ausführlicher beschrieben.

DataGridViewTextBoxColumn

DataGridViewTextBoxColumn ist ein universeller Spaltentyp zur Verwendung mit textbasierten Werten wie Zahlen und Zeichenfolgen. Im Bearbeitungsmodus wird in der aktiven Zelle ein TextBox-Steuerelement angezeigt, mit dem der Benutzer den Zellwert ändern kann.

Zellwerte werden für die Anzeige automatisch in Zeichenfolgen konvertiert. Vom Benutzer eingegebene oder geänderte Werte werden automatisch so analysiert, dass ein Zellwert des entsprechenden Datentyps entsteht. Sie können diese Konvertierungen anpassen, indem Sie die Ereignisse CellFormatting und CellParsing des DataGridView-Steuerelements behandeln.

Der Datentyp des Zellwerts einer Spalte wird in der ValueType-Eigenschaft der Spalte angegeben.

DataGridViewCheckBoxColumn

DataGridViewCheckBoxColumn wird mit Boolean- und CheckState-Werten verwendet. Boolean-Werte werden je nach Wert der ThreeState-Eigenschaft als Kontrollkästchen mit zwei oder drei Zuständen angezeigt. Wenn die Spalte an CheckState-Werte gebunden ist, ist der Wert der ThreeState-Eigenschaft standardmäßig true.

Normalerweise sind die Werte von Kontrollkästchen entweder für die Speicherung wie für beliebige andere Daten oder die Durchführung von Massenvorgängen bestimmt. Wenn Sie sofort reagieren möchten, wenn Benutzer auf ein Kontrollkästchen klicken, können Sie das CellClick-Ereignis behandeln. Allerdings tritt dieses Ereignis ein, ehe der Zellwert aktualisiert wird. Wenn Sie den neuen Wert zum Zeitpunkt des Klicks benötigen, besteht eine Möglichkeit darin, den erwarteten Wert auf Grundlage des aktuellen Werts zu berechnen. Eine andere Möglichkeit besteht darin, die Änderung sofort zu bestätigen und das CellValueChanged-Ereignis zu behandeln, um darauf zu reagieren. Um die Änderung zu committen, wenn auf die Zelle geklickt wird, müssen Sie das CurrentCellDirtyStateChanged-Ereignis behandeln. Wenn die aktuelle Zelle eine Kontrollkästchenzelle ist, rufen Sie im Handler die CommitEdit-Methode auf und geben den Commit-Wert ein.

DataGridViewImageColumn

DataGridViewImageColumn wird verwendet, um Bilder anzuzeigen. Bildspalten können automatisch anhand einer Datenquelle, manuell für ungebundene Spalten oder dynamisch in einem Handler für das CellFormatting-Ereignis aufgefüllt werden.

Die automatische Auffüllung einer Bildspalte aus einer Datenquelle funktioniert mit Bytearrays in einer Vielzahl von Bildformaten, einschließlich aller von der Image-Klasse unterstützten Formate und des von Microsoft® Access und der Beispieldatenbank Northwind verwendeten OLE-Bildformats.

Das manuelle Auffüllen einer Spalte mit Bildern ist nützlich, wenn Sie die Funktionalität von DataGridViewButtonColumn bieten möchten, aber mit angepasstem Aussehen. Sie können das DataGridView.CellClick-Ereignis behandeln, um auf Klicks innerhalb einer Bildzelle zu reagieren.

Das Auffüllen der Zellen einer Bildspalte in einem Handler für das CellFormatting-Ereignis ist nützlich, wenn Sie Bilder für berechnete Werte oder Werte in Nicht-Bildformaten bereitstellen möchten. Angenommen, Sie haben die Spalte „Risiko“ mit Zeichenfolgen wie "high", "middle" und "low", die Sie in Form von Symbolen anzeigen möchten. Alternativ kann es auch die Spalte „Bild“ geben, die die Speicherorte der Bilder enthält, die geladen werden müssen, anstatt den binären Inhalt der Bilder.

DataGridViewButtonColumn

Mit DataGridViewButtonColumn können Sie eine Spalte mit Zellen anzeigen, die Schaltflächen enthalten. Dies ist nützlich, wenn Sie Ihren Benutzern eine einfache Möglichkeit bieten möchten, Aktionen auf bestimmte Datensätze anzuwenden, z. B. eine Bestellung aufzugeben oder untergeordnete Datensätze in einem separaten Fenster anzeigen zu lassen.

Schaltflächenspalten werden bei der Datenbindung eines DataGridView-Steuerelements nicht automatisch generiert. Um Schaltflächenspalten zu verwenden, müssen Sie diese manuell erstellen und zur Sammlung hinzufügen, die von der DataGridView.Columns-Eigenschaft zurückgegeben wird.

Sie können auf Klicks des Benutzers in Schaltflächenzellen reagieren, indem Sie das DataGridView.CellClick-Ereignis behandeln.

DataGridViewComboBoxColumn

Mit DataGridViewComboBoxColumn können Sie eine Spalte mit Zellen anzeigen, die Dropdownlisten enthalten. Dies ist nützlich für die Dateneingabe in Felder, die nur bestimmte Werte enthalten dürfen, wie z. B. die Spalte „Category“ in der Tabelle „Products“ in der Beispieldatenbank Northwind.

Sie können die Dropdownliste, die für alle Zellen verwendet wird, auf die gleiche Weise auffüllen, wie Sie eine ComboBox-Dropdownliste auffüllen, entweder manuell über die von der Items-Eigenschaft zurückgegebene Sammlung oder durch Bindung an eine Datenquelle über die Eigenschaften DataSource, DisplayMember und ValueMember. Weitere Informationen finden Sie unter ComboBox-Steuerelement.

Sie können die tatsächlichen Zellwerte an die vom DataGridView-Steuerelement verwendete Datenquelle binden, indem Sie die DataPropertyName-Eigenschaft von System.Windows.Forms.DataGridViewComboBoxColumn festlegen.

Kombinationsfeldspalten werden bei der Datenbindung eines DataGridView-Steuerelements nicht automatisch generiert. Um Kombinationsfeldspalten zu verwenden, müssen Sie diese manuell erstellen und zur Sammlung hinzufügen, die von der Columns-Eigenschaft zurückgegeben wird.

DataGridViewLinkColumn

Mit DataGridViewLinkColumn können Sie eine Spalte mit Zellen anzeigen, die Links enthalten. Dies ist nützlich für URL-Werte in der Datenquelle oder als Alternative zur Schaltflächenspalte für spezielle Vorgänge wie das Öffnen eines Fensters mit untergeordneten Datensätzen.

Linkspalten werden bei der Datenbindung eines DataGridView-Steuerelements nicht automatisch generiert. Um Linkspalten verwenden zu können, müssen Sie diese manuell erstellen und zur Sammlung hinzufügen, die von der Columns-Eigenschaft zurückgegeben wird.

Sie können auf Klicks des Benutzers auf Links reagieren, indem Sie das CellContentClick-Ereignis behandeln. Dieses Ereignis unterscheidet sich von den Ereignissen CellClick und CellMouseClick, die auftreten, wenn ein Benutzer auf eine beliebige Stelle in einer Zelle klickt.

Die DataGridViewLinkColumn-Klasse bietet mehrere Eigenschaften, mit denen Sie das Aussehen von Links vor, während und nach dem Klicken auf sie verändern können.

Weitere Informationen