System.Windows.Forms-Namesp ...


.NET Framework-Klassenbibliothek
DataGridView-Klasse

Aktualisiert: November 2007

Zeigt Daten in einem benutzerdefinierbaren Raster an.

Namespace:  System.Windows.Forms
Assembly:  System.Windows.Forms (in System.Windows.Forms.dll)
Syntax

Visual Basic (Deklaration)
<ComplexBindingPropertiesAttribute("DataSource", "DataMember")> _
<ComVisibleAttribute(True)> _
<ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)> _
<DockingAttribute(DockingBehavior.Ask)> _
Public Class DataGridView _
    Inherits Control _
    Implements ISupportInitialize
Visual Basic (Verwendung)
Dim instance As DataGridView
C#
[ComplexBindingPropertiesAttribute("DataSource", "DataMember")]
[ComVisibleAttribute(true)]
[ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch)]
[DockingAttribute(DockingBehavior.Ask)]
public class DataGridView : Control, 
    ISupportInitialize
VisualC++
[ComplexBindingPropertiesAttribute(L"DataSource", L"DataMember")]
[ComVisibleAttribute(true)]
[ClassInterfaceAttribute(ClassInterfaceType::AutoDispatch)]
[DockingAttribute(DockingBehavior::Ask)]
public ref class DataGridView : public Control, 
    ISupportInitialize
J#
/** @attribute ComplexBindingPropertiesAttribute("DataSource", "DataMember") */
/** @attribute ComVisibleAttribute(true) */
/** @attribute ClassInterfaceAttribute(ClassInterfaceType.AutoDispatch) */
/** @attribute DockingAttribute(DockingBehavior.Ask) */
public class DataGridView extends Control implements ISupportInitialize
Jscript
public class DataGridView extends Control implements ISupportInitialize
Hinweise

Das DataGridView-Steuerelement stellt eine benutzerdefinierbare Tabelle zum Anzeigen von Daten bereit. In der DataGridView-Klasse können Zellen, Zeilen, Spalten und Rahmen mithilfe der Eigenschaften DefaultCellStyle, ColumnHeadersDefaultCellStyle, CellBorderStyle und GridColor angepasst werden. Weitere Informationen finden Sie unter Grundlegende Formatierungen und Formate im DataGridView-Steuerelement in Windows Forms.

Mit einem DataGridView-Steuerelement können Sie Daten mit oder ohne die zugrunde liegende Datenquelle anzeigen. Sie können ohne Angabe einer Datenquelle Spalten und Zeilen erstellen, die Daten enthalten, und sie direkt der DataGridView hinzufügen, indem Sie die Rows- und die Columns-Eigenschaft verwenden. Sie können auch mithilfe der Rows-Auflistung auf DataGridViewRow-Objekte zugreifen und mithilfe der DataGridViewRow..::.Cells-Eigenschaft Zellwerte direkt lesen bzw. schreiben. Der Item-Indexer stellt ebenfalls eine direkte Zugriffsmöglichkeit auf die Zellen bereit.

Statt das Steuerelement manuell mit Daten zu füllen, können Sie auch die DataSource-Eigenschaft und die DataMember-Eigenschaft festlegen, um die DataGridView an eine Datenquelle zu binden und automatisch mit Daten zu füllen. Weitere Informationen finden Sie unter Anzeigen von Daten im DataGridView-Steuerelement in Windows Forms.

Wenn Sie mit sehr umfangreichen Datenmengen arbeiten, können Sie die VirtualMode-Eigenschaft auf true festlegen, um eine Teilmenge der verfügbaren Daten anzuzeigen. Im virtuellen Modus muss ein Datencache implementiert werden, aus dem das DataGridView-Steuerelement gefüllt wird. Weitere Informationen finden Sie unter Datenanzeigemodi im DataGridView-Steuerelement in Windows Forms.

Weitere Informationen über die im DataGridView-Steuerelement verfügbaren Features finden Sie unter DataGridView-Steuerelement (Windows Forms). Die folgende Tabelle enthält Links direkt zu häufigen Aufgaben.

TopicLocation
Exemplarische Vorgehensweise: Erstellen ein Master-/Detailformulars mit zwei DataGridView-Steuerelementen in Windows Formsdv_fxmclictl
Exemplarische Vorgehensweise: Erstellen eines Master-/Detailformulars mit zwei DataGridView-Steuerelementen in Windows FormsWindows Forms-Steuerelemente in .NET Framework SDK
Exemplarische Vorgehensweise: Validieren von Daten im DataGridView-Steuerelement in Windows FormsWindows Forms-Steuerelemente in .NET Framework SDK
Exemplarische Vorgehensweise: Validieren von Daten in Windows Forms DataGridView Controldv_fxmclictl
Gewusst wie: Ändern des Typs einer DataGridView-Spalte in Windows Forms mithilfe des DesignersSteuerelemente für Windows Forms
Gewusst wie: Anpassen der Datenformatierung im DataGridView-Steuerelement in Windows FormsWindows Forms-Steuerelemente in .NET Framework SDK
Gewusst wie: Binden von Daten an das DataGridView-Steuerelement in Windows FormsWindows Forms-Steuerelemente in .NET Framework SDK
Gewusst wie: Binden von Daten an das DataGridView-Steuerelement in Windows Forms mithilfe des DesignersSteuerelemente für Windows Forms
Gewusst wie: Festlegen von Schriftart- und Farbstilen im DataGridView-Steuerelement in Windows FormsWindows Forms-Steuerelemente in .NET Framework SDK
Gewusst wie: Festlegen von standardmäßigen Zellenstilen und Datenformaten für das DataGridView-Steuerelement in Windows Forms mithilfe des DesignersSteuerelemente für Windows Forms
Gewusst wie: Formatieren von Daten im DataGridView-Steuerelement in Windows FormsWindows Forms-Steuerelemente in .NET Framework SDK
Gewusst wie: Hinzufügen von QuickInfos zu einzelnen Zellen in einem DataGridView-Steuerelement in Windows FormsWindows Forms-Steuerelemente in .NET Framework SDK
SO WIRD'S GEMACHT: Ändern Sie den Typ einer Windows Forms DataGridView-Spalte mithilfe des Designersdv_mclictl
SO WIRD'S GEMACHT: Binden Sie Daten an Windows Forms DataGridView Control Using the Designerdv_mclictl
SO WIRD'S GEMACHT: Daten an das DataGridView-Steuerelement in Windows Forms bindendv_fxmclictl
SO WIRD'S GEMACHT: Festlegen von Schriftart und Farbe Formatvorlagen in Windows Forms DataGridView Controldv_fxmclictl
SO WIRD'S GEMACHT: Format Data in the Windows Forms DataGridView Controldv_fxmclictl
SO WIRD'S GEMACHT: Legen Sie Default Cell Styles und Datenformate für Windows Forms DataGridView Control Using the Designerdv_mclictl
SO WIRD'S GEMACHT: Passen Sie Data Formatting in the Windows Forms DataGridView Control andv_fxmclictl
SO WIRD'S GEMACHT: QuickInfos zu einzelnen Zellen in einer Windows Forms DataGridView Control hinzufügendv_fxmclictl

Obwohl das DataGrid-Steuerelement das DataGridView-Steuerelement früherer Versionen ersetzt und funktionell erweitert, wird das DataGrid-Steuerelement sowohl aus Gründen der Abwärtskompatibilität als auch, falls gewünscht, für die eigene zukünftige Verwendung beibehalten. Weitere Informationen finden Sie unter Unterschiede zwischen dem DataGridView-Steuerelement und dem DataGrid-Steuerelement in Windows Forms.

wc5cbb9z.alert_note(de-de,VS.90).gifHinweis:

Das DataGridView-Steuerelement erbt die ContextMenu-Eigenschaft und die ContextMenuStrip-Eigenschaft des Control, unterstützt aber nur die ContextMenuStrip-Eigenschaft. Das Verwenden der ContextMenu-Eigenschaft mit dem DataGridView-Steuerelement hat keine Auswirkungen.

Beispiele

Im folgenden Codebeispiel wird die Initialisierung eines nicht gebundenen DataGridView-Steuerelements veranschaulicht.

Visual Basic
Imports System
Imports System.Drawing
Imports System.Windows.Forms

Public Class Form1
    Inherits System.Windows.Forms.Form

    Private buttonPanel As New Panel
    Private WithEvents songsDataGridView As New DataGridView
    Private WithEvents addNewRowButton As New Button
    Private WithEvents deleteRowButton As New Button

    Private Sub Form1_Load(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles MyBase.Load

        SetupLayout()
        SetupDataGridView()
        PopulateDataGridView()

    End Sub

    Private Sub songsDataGridView_CellFormatting(ByVal sender As Object, _
        ByVal e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) _
        Handles songsDataGridView.CellFormatting

        If Me.songsDataGridView.Columns(e.ColumnIndex).Name = _
            "Release Date" Then

            If e IsNot Nothing Then
                If e.Value IsNot Nothing Then
                    Try
                        e.Value = DateTime.Parse(e.Value.ToString()) _
                            .ToLongDateString()
                        e.FormattingApplied = True
                    Catch ex As FormatException
                        Console.WriteLine("{0} is not a valid date.", e.Value.ToString())
                    End Try
                End If
            End If

        End If

    End Sub

    Private Sub addNewRowButton_Click(ByVal sender As Object, _
        ByVal e As EventArgs) Handles addNewRowButton.Click

        Me.songsDataGridView.Rows.Add()

    End Sub

    Private Sub deleteRowButton_Click(ByVal sender As Object, _
        ByVal e As EventArgs) Handles deleteRowButton.Click

        If Me.songsDataGridView.SelectedRows.Count > 0 AndAlso _
            Not Me.songsDataGridView.SelectedRows(0).Index = _
            Me.songsDataGridView.Rows.Count - 1 Then

            Me.songsDataGridView.Rows.RemoveAt( _
                Me.songsDataGridView.SelectedRows(0).Index)

        End If

    End Sub

    Private Sub SetupLayout()

        Me.Size = New Size(600, 500)

        With addNewRowButton
            .Text = "Add Row"
            .Location = New Point(10, 10)
        End With

        With deleteRowButton
            .Text = "Delete Row"
            .Location = New Point(100, 10)
        End With

        With buttonPanel
            .Controls.Add(addNewRowButton)
            .Controls.Add(deleteRowButton)
            .Height = 50
            .Dock = DockStyle.Bottom
        End With

        Me.Controls.Add(Me.buttonPanel)

    End Sub

    Private Sub SetupDataGridView()

        Me.Controls.Add(songsDataGridView)

        songsDataGridView.ColumnCount = 5
        With songsDataGridView.ColumnHeadersDefaultCellStyle
            .BackColor = Color.Navy
            .ForeColor = Color.White
            .Font = New Font(songsDataGridView.Font, FontStyle.Bold)
        End With

        With songsDataGridView
            .Name = "songsDataGridView"
            .Location = New Point(8, 8)
            .Size = New Size(500, 250)
            .AutoSizeRowsMode = _
                DataGridViewAutoSizeRowsMode.DisplayedCellsExceptHeaders
            .ColumnHeadersBorderStyle = DataGridViewHeaderBorderStyle.Single
            .CellBorderStyle = DataGridViewCellBorderStyle.Single
            .GridColor = Color.Black
            .RowHeadersVisible = False

            .Columns(0).Name = "Release Date"
            .Columns(1).Name = "Track"
            .Columns(2).Name = "Title"
            .Columns(3).Name = "Artist"
            .Columns(4).Name = "Album"
            .Columns(4).DefaultCellStyle.Font = _
                New Font(Me.songsDataGridView.DefaultCellStyle.Font, FontStyle.Italic)

            .SelectionMode = DataGridViewSelectionMode.FullRowSelect
            .MultiSelect = False
            .Dock = DockStyle.Fill
        End With

    End Sub

    Private Sub PopulateDataGridView()

        Dim row0 As String() = {"11/22/1968", "29", "Revolution 9", _
            "Beatles", "The Beatles [White Album]"}
        Dim row1 As String() = {"1960", "6", "Fools Rush In", _
            "Frank Sinatra", "Nice 'N' Easy"}
        Dim row2 As String() = {"11/11/1971", "1", "One of These Days", _
            "Pink Floyd", "Meddle"}
        Dim row3 As String() = {"1988", "7", "Where Is My Mind?", _
            "Pixies", "Surfer Rosa"}
        Dim row4 As String() = {"5/1981", "9", "Can't Find My Mind", _
            "Cramps", "Psychedelic Jungle"}
        Dim row5 As String() = {"6/10/2003", "13", _
            "Scatterbrain. (As Dead As Leaves.)", _
            "Radiohead", "Hail to the Thief"}
        Dim row6 As String() = {"6/30/1992", "3", "Dress", "P J Harvey", "Dry"}

        With Me.songsDataGridView.Rows
            .Add(row0)
            .Add(row1)
            .Add(row2)
            .Add(row3)
            .Add(row4)
            .Add(row5)
            .Add(row6)
        End With

        With Me.songsDataGridView
            .Columns(0).DisplayIndex = 3
            .Columns(1).DisplayIndex = 4
            .Columns(2).DisplayIndex = 0
            .Columns(3).DisplayIndex = 1
            .Columns(4).DisplayIndex = 2
        End With

    End Sub


    <STAThreadAttribute()> _
    Public Shared Sub Main()
        Application.EnableVisualStyles()
        Application.Run(New Form1())
    End Sub

End Class
C#
using System;
using System.Drawing;
using System.Windows.Forms;

public class Form1 : System.Windows.Forms.Form
{
    private Panel buttonPanel = new Panel();
    private DataGridView songsDataGridView = new DataGridView();
    private Button addNewRowButton = new Button();
    private Button deleteRowButton = new Button();

    public Form1()
    {
        this.Load += new EventHandler(Form1_Load);
    }

    private void Form1_Load(System.Object sender, System.EventArgs e)
    {
        SetupLayout();
        SetupDataGridView();
        PopulateDataGridView();
    }

    private void songsDataGridView_CellFormatting(object sender,
        System.Windows.Forms.DataGridViewCellFormattingEventArgs e)
    {
        if (this.songsDataGridView.Columns[e.ColumnIndex].Name == "Release Date")
        {
            if (e != null)
            {
                if (e.Value != null)
                {
                    try
                    {
                        e.Value = DateTime.Parse(e.Value.ToString())
                            .ToLongDateString();
                        e.FormattingApplied = true;
                    }
                    catch (FormatException)
                    {
                        Console.WriteLine("{0} is not a valid date.", e.Value.ToString());
                    }
                }
            }
        }
    }

    private void addNewRowButton_Click(object sender, EventArgs e)
    {
        this.songsDataGridView.Rows.Add();
    }

    private void deleteRowButton_Click(object sender, EventArgs e)
    {
        if (this.songsDataGridView.SelectedRows.Count > 0 &&
            this.songsDataGridView.SelectedRows[0].Index !=
            this.songsDataGridView.Rows.Count - 1)
        {
            this.songsDataGridView.Rows.RemoveAt(
                this.songsDataGridView.SelectedRows[0].Index);
        }
    }

    private void SetupLayout()
    {
        this.Size = new Size(600, 500);

        addNewRowButton.Text = "Add Row";
        addNewRowButton.Location = new Point(10, 10);
        addNewRowButton.Click += new EventHandler(addNewRowButton_Click);

        deleteRowButton.Text = "Delete Row";
        deleteRowButton.Location = new Point(100, 10);
        deleteRowButton.Click += new EventHandler(deleteRowButton_Click);

        buttonPanel.Controls.Add(addNewRowButton);
        buttonPanel.Controls.Add(deleteRowButton);
        buttonPanel.Height = 50;
        buttonPanel.Dock = DockStyle.Bottom;

        this.Controls.Add(this.buttonPanel);
    }

    private void SetupDataGridView()
    {
        this.Controls.Add(songsDataGridView);

        songsDataGridView.ColumnCount = 5;

        songsDataGridView.ColumnHeadersDefaultCellStyle.BackColor = Color.Navy;
        songsDataGridView.ColumnHeadersDefaultCellStyle.ForeColor = Color.White;
        songsDataGridView.ColumnHeadersDefaultCellStyle.Font =
            new Font(songsDataGridView.Font, FontStyle.Bold);

        songsDataGridView.Name = "songsDataGridView";
        songsDataGridView.Location = new Point(8, 8);
        songsDataGridView.Size = new Size(500, 250);
        songsDataGridView.AutoSizeRowsMode =
            DataGridViewAutoSizeRowsMode.DisplayedCellsExceptHeaders;
        songsDataGridView.ColumnHeadersBorderStyle =
            DataGridViewHeaderBorderStyle.Single;
        songsDataGridView.CellBorderStyle = DataGridViewCellBorderStyle.Single;
        songsDataGridView.GridColor = Color.Black;
        songsDataGridView.RowHeadersVisible = false;

        songsDataGridView.Columns[0].Name = "Release Date";
        songsDataGridView.Columns[1].Name = "Track";
        songsDataGridView.Columns[2].Name = "Title";
        songsDataGridView.Columns[3].Name = "Artist";
        songsDataGridView.Columns[4].Name = "Album";
        songsDataGridView.Columns[4].DefaultCellStyle.Font =
            new Font(songsDataGridView.DefaultCellStyle.Font, FontStyle.Italic);

        songsDataGridView.SelectionMode =
            DataGridViewSelectionMode.FullRowSelect;
        songsDataGridView.MultiSelect = false;
        songsDataGridView.Dock = DockStyle.Fill;

        songsDataGridView.CellFormatting += new
            DataGridViewCellFormattingEventHandler(
            songsDataGridView_CellFormatting);
    }

    private void PopulateDataGridView()
    {

        string[] row0 = { "11/22/1968", "29", "Revolution 9", 
            "Beatles", "The Beatles [White Album]" };
        string[] row1 = { "1960", "6", "Fools Rush In", 
            "Frank Sinatra", "Nice 'N' Easy" };
        string[] row2 = { "11/11/1971", "1", "One of These Days", 
            "Pink Floyd", "Meddle" };
        string[] row3 = { "1988", "7", "Where Is My Mind?", 
            "Pixies", "Surfer Rosa" };
        string[] row4 = { "5/1981", "9", "Can't Find My Mind", 
            "Cramps", "Psychedelic Jungle" };
        string[] row5 = { "6/10/2003", "13", 
            "Scatterbrain. (As Dead As Leaves.)", 
            "Radiohead", "Hail to the Thief" };
        string[] row6 = { "6/30/1992", "3", "Dress", "P J Harvey", "Dry" };

        songsDataGridView.Rows.Add(row0);
        songsDataGridView.Rows.Add(row1);
        songsDataGridView.Rows.Add(row2);
        songsDataGridView.Rows.Add(row3);
        songsDataGridView.Rows.Add(row4);
        songsDataGridView.Rows.Add(row5);
        songsDataGridView.Rows.Add(row6);

        songsDataGridView.Columns[0].DisplayIndex = 3;
        songsDataGridView.Columns[1].DisplayIndex = 4;
        songsDataGridView.Columns[2].DisplayIndex = 0;
        songsDataGridView.Columns[3].DisplayIndex = 1;
        songsDataGridView.Columns[4].DisplayIndex = 2;
    }


    [STAThreadAttribute()]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.Run(new Form1());
    }
}
Vererbungshierarchie

System..::.Object
  System..::.MarshalByRefObject
    System.ComponentModel..::.Component
      System.Windows.Forms..::.Control
        System.Windows.Forms..::.DataGridView
Threadsicherheit

Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.
Plattformen

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework und .NET Compact Framework unterstützen nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.
Versionsinformationen

.NET Framework

Unterstützt in: 3.5, 3.0, 2.0
Siehe auch

Referenz

Weitere Ressourcen

Page view tracker