Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Gyakran előfordulhat, hogy olyan táblázatos adatokat szeretne megjeleníteni, amelyek nem adatbázisból származnak. Előfordulhat például, hogy egy kétdimenziós sztringtömb tartalmát szeretné megjeleníteni. A DataGridView osztály egyszerű és nagy mértékben testre szabható módot kínál az adatok adatforráshoz kötés nélküli megjelenítésére. Ez az útmutató bemutatja, hogyan tölthet fel egy DataGridView vezérlőelemet, és hogyan kezelheti a sorok hozzáadását és törlését "kötetlen" módban. Alapértelmezés szerint a felhasználó új sorokat vehet fel. A sorok hozzáadásának megakadályozása érdekében állítsa be a AllowUserToAddRows tulajdonságot false-re.
A jelen témakörben szereplő kód egyetlen listaelemként való másolásáról a Útmutató: Kötetlen Windows Forms DataGridView-vezérlő létrehozásacímű témakörben olvashat.
Az űrlap létrehozása
Kötetlen DataGridView-vezérlő használata
Hozzon létre egy osztályt, amely Form származik, és a következő változódeklarációkat és
Mainmetódust tartalmazza.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 ClassImplementáljon egy
SetupLayoutmetódust az űrlap osztálydefiníciójában az űrlap elrendezésének beállításához.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 SubHozzon létre egy
SetupDataGridViewmetódust a DataGridView oszlopok és tulajdonságok beállításához.Ez a metódus először hozzáadja a DataGridView vezérlőelemet az űrlap Controls gyűjteményéhez. Ezután a megjelenítendő oszlopok száma a ColumnCount tulajdonság használatával van beállítva. Az oszlopfejlécek alapértelmezett stílusa a BackColor tulajdonság által visszaadott ForeColorFont, DataGridViewCellStyleés ColumnHeadersDefaultCellStyle tulajdonságainak beállításával állítható be.
Az elrendezési és megjelenési tulajdonságok be vannak állítva, majd az oszlopnevek lesznek hozzárendelve. Amikor ez az eljárás befejeződik, a DataGridView vezérlő készen áll a feltöltésre.
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 SubHozzon létre egy
PopulateDataGridViewmetódust, amellyel sorokat adhat hozzá a DataGridView vezérlőelemhez.Minden sor egy dalt és annak kapcsolódó adatait jelöli.
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 SubA segédprogram módszereivel eseménykezelőket csatolhat.
Kezelni fogja a Hozzáadás és a Törlés gombokhoz tartozó Click eseményeket, az űrlap Load eseményét, valamint a DataGridView vezérlőelem CellFormatting eseményét.
Amikor a gomb hozzáadása eseménye Click bekövetkezik, egy új, üres sor kerül a DataGridView-ba.
Amikor a Törlés gomb Click eseménye megjelenik, a kijelölt sor törlődik, kivéve, ha az új rekordok sorát jelöli, ami lehetővé teszi, hogy a felhasználó új sorokat vegyen fel. Ez a sor mindig a DataGridView vezérlőelem utolsó sora.
Az űrlap Load eseményének létrehozásakor a rendszer meghívja a
SetupLayout,SetupDataGridViewésPopulateDataGridViewsegédprogram metódusokat.A CellFormatting esemény felemelésekor a
Dateoszlop minden cellája hosszú dátumként van formázva, kivéve, ha a cella értéke nem elemezhető.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
Az alkalmazás tesztelése
Mostantól tesztelheti az űrlapot, hogy megbizonyosodjon róla, hogy a várt módon viselkedik.
Az űrlap tesztelése
Nyomja le az F5 billentyűt az alkalmazás futtatásához.
Megjelenik egy DataGridView vezérlőelem, amely megjeleníti a
PopulateDataGridViewfelsorolt dalokat. Új sorokat a Sor hozzáadása gombbal vehet fel, a kijelölt sorokat pedig a Sor törlése gombbal törölheti. A kötetlen DataGridView vezérlő az adattár, és az adatai függetlenek minden külső forrástól, például egy DataSet-től vagy tömbtől.
Következő lépések
Ez az alkalmazás alapvető ismereteket nyújt a DataGridView vezérlő képességeiről. A DataGridView vezérlőelem megjelenését és viselkedését többféleképpen is testre szabhatja:
Módosítsa a szegély- és fejlécstílusokat. További információért lásd: Útmutató: A szegély- és rácsvonalstílusok módosítása a Windows Forms DataGridView vezérlőben.
Engedélyezze vagy korlátozza a felhasználói bevitelt a DataGridView vezérlőelemre. További információkért lásd: Sorok hozzáadásának és törlésének megakadályozása a Windows Forms DataGridView vezérlőben, és Oszlopok létrehozása Read-Only a Windows Forms DataGridView vezérlőben.
Ellenőrizze a felhasználói bevitelt az adatbázissal kapcsolatos hibák esetén. További információért lásd a útmutatót: Az adatbevitel során előforduló hibák kezelése a Windows Forms DataGridView vezérlőben.
Nagyon nagy adatkészletek kezelése virtuális módban. További információért lásd: Útmutató: Virtuális mód implementálása a Windows Forms DataGridView vezérlőben.
A cellák megjelenésének testreszabása. További információ: Útmutató: A Cellák megjelenésének testreszabása a Windows Forms DataGridView vezérlőben és Útmutató: Alapértelmezett cellastílusok beállítása a Windows Forms DataGridView vezérlő.
Lásd még
.NET Desktop feedback