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.
Möglicherweise möchten Sie häufig tabellarische Daten anzeigen, die nicht aus einer Datenbank stammen. Sie können z. B. den Inhalt eines zweidimensionalen Arrays von Zeichenfolgen anzeigen. Die DataGridView Klasse bietet eine einfache und hochgradig anpassbare Möglichkeit zum Anzeigen von Daten ohne Bindung an eine Datenquelle. In dieser exemplarischen Vorgehensweise wird gezeigt, wie Sie ein DataGridView Steuerelement auffüllen und das Hinzufügen und Löschen von Zeilen im Modus "ungebunden" verwalten. Standardmäßig kann der Benutzer neue Zeilen hinzufügen. Um das Hinzufügen von Zeilen zu verhindern, legen Sie die AllowUserToAddRows Eigenschaft auf false
.
Informationen zum Kopieren des Codes in diesem Thema als einzelne Auflistung finden Sie unter How to: Create an Unbound Windows Forms DataGridView Control.
Erstellen des Formulars
So nutzen Sie ein DataGridView-Steuerelement ohne Datenbindung
Erstellen Sie eine Klasse, die von Form abgeleitet ist und die folgenden Variablendeklarationen sowie die
Main
-Methode enthält.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();
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
[STAThreadAttribute()] static void Main() { Application.EnableVisualStyles(); Application.Run(new Form1()); } }
<STAThreadAttribute()> _ Public Shared Sub Main() Application.EnableVisualStyles() Application.Run(New Form1()) End Sub End Class
Implementieren Sie eine
SetupLayout
Methode in der Klassendefinition Ihres Formulars, um das Layout des Formulars einzurichten.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 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
Erstellen Sie eine
SetupDataGridView
Methode zum Einrichten der DataGridView Spalten und Eigenschaften.Diese Methode fügt das DataGridView Steuerelement zuerst der Auflistung des Formulars Controls hinzu. Als Nächstes wird die Anzahl der anzuzeigenden Spalten mithilfe der ColumnCount Eigenschaft festgelegt. Die Standardformatvorlage für die Spaltenüberschriften wird durch Festlegen der BackColor, ForeColor und Font Eigenschaften des von der DataGridViewCellStyle Eigenschaft zurückgegebenen ColumnHeadersDefaultCellStyle festgelegt.
Layout- und Darstellungseigenschaften werden festgelegt, und dann werden die Spaltennamen zugewiesen. Wenn diese Methode beendet wird, kann das DataGridView Steuerelement ausgefüllt werden.
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 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
Erstellen Sie eine
PopulateDataGridView
Methode zum Hinzufügen von Zeilen zum DataGridView Steuerelement.Jede Zeile stellt einen Song und die zugehörigen Informationen dar.
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; }
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
Sobald die Hilfsmethoden vorhanden sind, können Sie Ereignishandler hinzufügen.
Sie behandeln die Ereignisse " Schaltflächen hinzufügen " und " Löschen " Click , das Ereignis des Formulars Load und das DataGridView Ereignis des Steuerelements CellFormatting .
Wenn das Ereignis der Schaltfläche "Hinzufügen " Click ausgelöst wird, wird der DataGridViewZeile eine neue, leere Zeile hinzugefügt.
Wenn das Ereignis der Schaltfläche "Löschen " Click ausgelöst wird, wird die ausgewählte Zeile gelöscht, es sei denn, es handelt sich um die Zeile für neue Datensätze, wodurch der Benutzer neue Zeilen hinzufügen kann. Diese Zeile ist immer die letzte Zeile im DataGridView Steuerelement.
Wenn das Ereignis des Formulars Load ausgelöst wird, werden die
SetupLayout
,SetupDataGridView
undPopulateDataGridView
Hilfsmethoden aufgerufen.Wenn das CellFormatting Ereignis ausgelöst wird, wird jede Zelle in der
Date
Spalte als langes Datum formatiert, es sei denn, der Wert der Zelle kann nicht analysiert werden.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 (e != null) { if (this.songsDataGridView.Columns[e.ColumnIndex].Name == "Release Date") { 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 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 e IsNot Nothing Then If Me.songsDataGridView.Columns(e.ColumnIndex).Name = _ "Release Date" 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
Testen der Anwendung
Sie können das Formular jetzt testen, um sicherzustellen, dass es sich wie erwartet verhält.
So testen Sie das Formular
Drücken Sie F5, um die Anwendung auszuführen.
Es wird ein DataGridView Steuerelement angezeigt, in dem die in
PopulateDataGridView
aufgeführten Songs angezeigt werden. Sie können neue Zeilen mit der Schaltfläche " Zeile hinzufügen " hinzufügen und ausgewählte Zeilen mit der Schaltfläche " Zeile löschen" löschen. Das ungebundene DataGridView Steuerelement ist der Datenspeicher, und seine Daten sind unabhängig von jeder externen Quelle, z. B. einer DataSet oder einem Array.
Nächste Schritte
Diese Anwendung vermittelt Ihnen ein grundlegendes Verständnis der Möglichkeiten des DataGridView-Steuerelements. Sie können das Erscheinungsbild und Verhalten des DataGridView Steuerelements auf verschiedene Arten anpassen:
Ändern Sie Rahmen- und Kopfzeilenstile. Weitere Informationen finden Sie unter Ändern des Rahmen- und Rasterlinienstils im DataGridView-Steuerelement in Windows Forms.
Aktivieren oder Einschränken von Benutzereingaben für das Steuerelement DataGridView. Weitere Informationen finden Sie unter So geht's: Verhindern von Zeilenhinzufügung und -löschung im Windows Forms DataGridView-Steuerelement, und So geht's: Spalten erstellen Read-Only im Windows Forms DataGridView-Steuerelement.
Überprüfen Sie die Benutzereingabe auf Datenbankfehler. Weitere Informationen finden Sie unter Exemplarische Vorgehensweise: Behandeln von Fehlern, die während der Dateneingabe im DataGridView-Steuerelement in Windows Forms auftreten.
Behandeln Sie sehr große Datensätze im virtuellen Modus. Weitere Informationen finden Sie unter Exemplarische Vorgehensweise: Implementieren des virtuellen Modus im DataGridView-Steuerelement in Windows Forms.
Passen Sie die Darstellung von Zellen an. Weitere Informationen finden Sie unter Anpassen der Darstellung von Zellen im DataGridView-Steuerelement von Windows Forms und Festlegen von Standardzellenformaten für das DataGridView-Steuerelement von Windows Forms.
Siehe auch
.NET Desktop feedback