Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Mogelijk wilt u vaak tabelgegevens weergeven die niet afkomstig zijn van een database. U wilt bijvoorbeeld de inhoud van een tweedimensionale matrix met tekenreeksen weergeven. De DataGridView-klasse biedt een eenvoudige en zeer aanpasbare manier om gegevens weer te geven zonder binding met een gegevensbron. In deze stapsgewijze handleiding ziet u hoe u een DataGridView controle vult en het toevoegen en verwijderen van rijen beheert in de niet-afhankelijke modus. Standaard kan de gebruiker nieuwe rijen toevoegen. Als u rijopvoeging wilt voorkomen, stelt u de eigenschap AllowUserToAddRows in false.
Als u de code in dit onderwerp als één vermelding wilt kopiëren, raadpleegt u Procedure: Een niet-afhankelijk Windows Forms DataGridView-besturingselement maken.
Het formulier maken
Een niet-afhankelijk DataGridView-besturingselement gebruiken
Maak een klasse die is afgeleid van Form en bevat de volgende variabeledeclaraties en
Mainmethode.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 ClassImplementeer een
SetupLayoutmethode in de klassedefinitie van uw formulier om de indeling van het formulier in te stellen.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 SubMaak een
SetupDataGridViewmethode om de DataGridView kolommen en eigenschappen in te stellen.Met deze methode wordt eerst het besturingselement DataGridView toegevoegd aan de Controls verzameling van het formulier. Vervolgens wordt het aantal kolommen dat moet worden weergegeven ingesteld met behulp van de eigenschap ColumnCount. De standaardstijl voor de kolomkoppen wordt ingesteld door de BackColor, ForeColoren Font eigenschappen van de DataGridViewCellStyle in te stellen die door de eigenschap ColumnHeadersDefaultCellStyle worden geretourneerd.
De eigenschappen indeling en vormgeving worden ingesteld en vervolgens worden de kolomnamen toegewezen. Wanneer deze methode wordt afgesloten, is het besturingselement DataGridView gereed om te worden ingevuld.
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 SubMaak een
PopulateDataGridViewmethode om rijen toe te voegen aan het besturingselement DataGridView.Elke rij vertegenwoordigt een nummer en de bijbehorende informatie.
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 SubMet de hulpmethoden kunt u gebeurtenis-handlers koppelen.
U verwerkt de knoppen Toevoegen en De knoppen Click verwijderen, de Load gebeurtenis van het formulier en de DataGridViewCellFormatting gebeurtenis van het besturingselement.
Wanneer de gebeurtenis van de knop Click wordt gegenereerd, wordt er een nieuwe, lege rij toegevoegd aan de DataGridView.
Wanneer de knop verwijderen gebeurtenis Click wordt gegenereerd, wordt de geselecteerde rij verwijderd, tenzij deze de rij is voor nieuwe records, waardoor de gebruiker nieuwe rijen kan toevoegen. Deze rij is altijd de laatste rij in het besturingselement DataGridView.
Wanneer de Load gebeurtenis van het formulier wordt gegenereerd, worden de
SetupLayout,SetupDataGridViewenPopulateDataGridViewhulpmethoden aangeroepen.Wanneer de CellFormatting gebeurtenis wordt gegenereerd, wordt elke cel in de kolom
Dateopgemaakt als een lange datum, tenzij de waarde van de cel niet kan worden geparseerd.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
De toepassing testen
U kunt het formulier nu testen om ervoor te zorgen dat het zich gedraagt zoals verwacht.
Om het formulier te testen
Druk op F5 om de toepassing uit te voeren.
U ziet een DataGridView besturingselement waarin de nummers worden weergegeven die worden vermeld in
PopulateDataGridView. U kunt nieuwe rijen toevoegen met de knop Rij toevoegen en u kunt geselecteerde rijen verwijderen met de knop Rij verwijderen. Het niet-afhankelijke DataGridView besturingselement is het gegevensarchief en de bijbehorende gegevens zijn onafhankelijk van een externe bron, zoals een DataSet of een matrix.
Volgende stappen
Deze toepassing biedt u een basiskennis van de mogelijkheden van het DataGridView besturingselement. U kunt het uiterlijk en gedrag van het besturingselement DataGridView op verschillende manieren aanpassen:
Rand- en koptekststijlen wijzigen. Zie Hoe de rand- en rasterlijnstijlen te wijzigen in het Windows Forms DataGridView-besturingselementvoor meer informatie.
Gebruikersinvoer inschakelen of beperken voor het DataGridView controle-element. Zie Hoe te: Het voorkomen van het toevoegen en verwijderen van rijen in het Besturingselement Windows Forms DataGridViewen Hoe te: Kolommen Read-Only maken in het Besturingselement Windows Forms DataGridView.
Controleer gebruikersinvoer op databasegerelateerde fouten. Zie Walkthrough: Afhandeling van fouten die optreden tijdens het invoeren van gegevens in het Besturingselement Windows Forms DataGridViewvoor meer informatie.
Zeer grote gegevenssets verwerken met behulp van de virtuele modus. Zie Walkthrough: De virtuele modus implementeren in het Besturingselement Windows Forms DataGridViewvoor meer informatie.
Het uiterlijk van cellen aanpassen. Zie Instructies: Het uiterlijk van cellen aanpassen in het Windows Forms DataGridView-besturingselement en Instructies: Standaardcelstijlen instellen voor het Windows Forms DataGridView-besturingselement.
Zie ook
.NET Desktop feedback