Procédure pas à pas : création d'un contrôle DataGridView Windows Forms non lié
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 AllowUserToAddRows propriété .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 Form et contient les déclarations et
Main
méthodes de variables suivantes.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 DataGridView contrôle à la collection du Controls formulaire. Ensuite, le nombre de colonnes à afficher est défini à l’aide de la ColumnCount propriété. Le style par défaut pour les en-têtes de colonne est défini en définissant les BackColorpropriétés , ForeColoret Font les DataGridViewCellStyle propriétés du retour par la ColumnHeadersDefaultCellStyle propriété.
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
PopulateDataGridView
méthode pour ajouter des lignes au DataGridView contrôle.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 Click boutons Ajouter et supprimer, l’événement du Load formulaire et l’événement DataGridView du CellFormatting contrôle.
Lorsque l’événement du Click bouton Ajouter est déclenché, une nouvelle ligne vide est ajoutée à l’élément DataGridView.
Lorsque l’événement du Click bouton Supprimer 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
SetupLayout
méthodes ,SetupDataGridView
etPopulateDataGridView
utilitaire 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 DataGridView fonctionnalités du contrôle. Vous pouvez personnaliser l’apparence et le comportement du DataGridView contrôle de plusieurs façons :
Modifier les styles de bordure et d’en-tête. Pour plus d’informations, consultez How to : Change the Border and Gridline Styles in the Windows Forms DataGridView Control.
Activez ou limitez l’entrée utilisateur au DataGridView contrôle. Pour plus d’informations, consultez How to : Prevent Row Addition and Deletion in the Windows Forms DataGridView Control, and How to : Make Columns Read-Only in the Windows Forms DataGridView Control.
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 How to : Customize the Appearance of Cells in the Windows Forms DataGridView Control and How to : Set Default Cell Styles for the Windows Forms DataGridView Control.
Voir aussi
.NET Desktop feedback
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour