Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Vous pouvez souvent afficher des données tabulaires qui ne proviennent pas d’une base de données. Par exemple, vous pouvez afficher le contenu d’un tableau à deux dimensions de chaînes. La DataGridView classe offre un moyen facile et hautement personnalisable d’afficher des données sans liaison à une source de données. Cette procédure pas à pas montre comment remplir un DataGridView contrôle et gérer l’ajout et la suppression de lignes en mode « non lié ». Par défaut, l’utilisateur peut ajouter de nouvelles lignes. Pour empêcher l’ajout de lignes, définissez la propriété AllowUserToAddRows sur false
.
Pour copier le code de cette rubrique sous la forme d’une liste unique, consultez Guide pratique pour créer un contrôle DataGridView Windows Forms indépendant.
Création du formulaire
Pour utiliser un contrôle DataGridView indépendant
Créez une classe qui dérive de Form et contient les déclarations de variables suivantes et la méthode
Main
.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
Implémentez une
SetupLayout
méthode dans la définition de classe de votre formulaire pour configurer la disposition du formulaire.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
Créez une
SetupDataGridView
méthode pour configurer les DataGridView colonnes et les propriétés.Cette méthode ajoute d’abord le contrôle DataGridView à la collection du formulaire Controls. Ensuite, le nombre de colonnes à afficher est défini à l’aide de la ColumnCount propriété. Le style par défaut des en-têtes de colonne est défini en configurant les propriétés BackColor, ForeColor, et Font de l’objet DataGridViewCellStyle retourné par la propriété ColumnHeadersDefaultCellStyle.
Les propriétés de disposition et d’apparence sont définies, puis les noms de colonnes sont attribués. Lorsque cette méthode se termine, le DataGridView contrôle est prêt à être rempli.
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
Créez une méthode
PopulateDataGridView
pour ajouter des lignes au contrôle DataGridView.Chaque ligne représente une chanson et ses informations associées.
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
Avec les méthodes utilitaires en place, vous pouvez attacher des gestionnaires d’événements.
Vous allez gérer les événements des boutons Ajouter et Click, l’événement du Load formulaire et l’événement DataGridView du CellFormatting contrôle.
Lorsque l’événement du bouton Click est déclenché, une nouvelle ligne vide est ajoutée à l’élément DataGridView.
Lorsque l’événement du bouton Click est déclenché, la ligne sélectionnée est supprimée, sauf s’il s’agit de la ligne des nouveaux enregistrements, ce qui permet à l’utilisateur d’ajouter de nouvelles lignes. Cette ligne est toujours la dernière ligne du DataGridView contrôle.
Lorsque l’événement du Load formulaire est déclenché, les méthodes
SetupLayout
,SetupDataGridView
, etPopulateDataGridView
utilitaires sont appelées.Lorsque l’événement CellFormatting est déclenché, chaque cellule de la
Date
colonne est mise en forme comme une date longue, sauf si la valeur de la cellule ne peut pas être analysée.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
Test de l’application
Vous pouvez maintenant tester le formulaire pour vous assurer qu’il se comporte comme prévu.
Pour tester le formulaire
Appuyez sur F5 pour exécuter l’application.
Vous verrez un DataGridView contrôle qui affiche les chansons répertoriées dans
PopulateDataGridView
. Vous pouvez ajouter de nouvelles lignes avec le bouton Ajouter une ligne et supprimer les lignes sélectionnées avec le bouton Supprimer la ligne . Le contrôle indépendant DataGridView est le magasin de données, et ses données sont indépendantes de n’importe quelle source externe, telle qu’un DataSet ou un tableau.
Étapes suivantes
Cette application vous donne une compréhension de base des fonctionnalités du contrôle DataGridView. Vous pouvez personnaliser l’apparence et le comportement du contrôle DataGridView de plusieurs façons :
Modifier les styles de bordure et d’en-tête. Pour plus d'informations, consultez Comment : Modifier les styles de bordure et de quadrillage dans le contrôle DataGridView de Windows Forms.
Activez ou limitez l’entrée utilisateur au contrôle DataGridView. Pour plus d’informations, consultez Aide et Astuces : empêcher l’ajout et la suppression de lignes dans le contrôle DataGridView Windows Forms, et Aide et Astuces : rendre les colonnes en lecture seule dans le contrôle DataGridView Windows Forms.
Vérifiez l’entrée de l’utilisateur pour les erreurs liées à la base de données. Pour plus d’informations, consultez procédure pas à pas : gestion des erreurs qui se produisent pendant l’entrée de données dans le contrôle DataGridView Windows Forms.
Gérez des jeux de données très volumineux à l’aide du mode virtuel. Pour plus d’informations, consultez Procédure pas à pas : implémentation du mode virtuel dans le contrôle DataGridView Windows Forms.
Personnalisez l’apparence des cellules. Pour plus d’informations, consultez Comment : Personnaliser l'apparence des cellules dans le contrôle DataGridView de Windows Forms et Comment : Définir les styles de cellules par défaut pour le contrôle DataGridView de Windows Forms.
Voir aussi
.NET Desktop feedback