Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Můžete často chtít zobrazit tabulková data, která nepocházejí z databáze. Můžete například chtít zobrazit obsah dvojrozměrného pole řetězců. Třída DataGridView poskytuje snadný a vysoce přizpůsobitelný způsob zobrazení dat bez vazby ke zdroji dat. Tento návod ukazuje, jak naplnit ovládací prvek DataGridView a spravovat přidávání a odstraňování řádků v režimu nevázané. Ve výchozím nastavení může uživatel přidat nové řádky. Chcete-li zabránit přidání řádku, nastavte vlastnost AllowUserToAddRows je false.
Pokud chcete zkopírovat kód v tomto tématu jako jeden výpis, přečtěte si Postupy: Vytvoření nevázaného ovládacího prvku Windows Forms DataGridView.
Vytvoření formuláře
Použití nevázaného ovládacího prvku DataGridView
Vytvořte třídu, která je odvozena z Form a obsahuje následující deklarace proměnných a
Mainmetoda.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 ClassImplementujte metodu
SetupLayoutv definici třídy formuláře pro nastavení rozložení formuláře.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 SubVytvořte
SetupDataGridViewmetodu pro nastavení DataGridView sloupců a vlastností.Tato metoda nejprve přidá ovládací prvek DataGridView do kolekce Controls formuláře. Dále je počet zobrazených sloupců nastaven pomocí vlastnosti ColumnCount. Výchozí styl záhlaví sloupců je určen nastavením vlastností BackColor, ForeColora Font objektu DataGridViewCellStyle vráceného vlastností ColumnHeadersDefaultCellStyle.
Vlastnosti rozložení a vzhledu se nastaví a pak se přiřadí názvy sloupců. Po ukončení této metody je ovládací prvek DataGridView připraven k naplnění.
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 SubVytvořte
PopulateDataGridViewmetodu pro přidání řádků do ovládacího prvku DataGridView.Každý řádek představuje skladbu a související informace.
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 SubPomocí pomocných metod můžete připojit obslužné rutiny událostí.
Budete zpracovávat Přidat a Odstranit události Click události, události Load formuláře a události DataGridView ovládacího prvku CellFormatting.
Když je vyvolána událost tlačítka PřidatClick, přidá se do DataGridViewnový prázdný řádek.
Když je vyvolána událost tlačítka Odstranit příkazem Click, vybraný řádek se odstraní, pokud se nejedná o řádek pro nové záznamy, což umožňuje uživateli přidávat nové řádky. Tento řádek je vždy posledním řádkem v ovládacím prvku DataGridView.
Když je vyvolána událost Load formuláře, jsou volány užitkové metody
SetupLayout,SetupDataGridViewaPopulateDataGridView.Při vyvolání události CellFormatting je každá buňka ve sloupci
Dateformátována jako dlouhé datum, pokud hodnotu buňky nelze analyzovat.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
Testování aplikace
Formulář teď můžete otestovat a ujistit se, že se chová podle očekávání.
Otestování formuláře
Stisknutím klávesy F5 spusťte aplikaci.
Zobrazí se ovládací prvek DataGridView, který zobrazuje skladby uvedené v
PopulateDataGridView. Nové řádky můžete přidat pomocí tlačítka Přidat řádek a vybrané řádky můžete odstranit tlačítkem Odstranit řádek. Nevázaný DataGridView ovládací prvek je úložiště dat a jeho data jsou nezávislá na jakémkoli externím zdroji, jako je DataSet nebo pole.
Další kroky
Tato aplikace vám poskytne základní znalosti o možnostech ovládacího prvku DataGridView. Vzhled a chování ovládacího prvku DataGridView můžete přizpůsobit několika způsoby:
Umožňuje změnit styly ohraničení a záhlaví. Další informace naleznete v tématu Postupy: Změna stylů ohraničení a mřížky v ovládacím prvku Windows Forms DataGridView.
Povolte nebo omezte uživatelský vstup na ovládací prvek DataGridView. Další informace naleznete v tématu Postupy: Zabránění přidávání a odstraňování řádků v ovládacím prvku Windows Forms DataGridViewa Postupy: Vytváření sloupců Read-Only v ovládacím prvku Windows Forms DataGridView.
Zkontrolujte, jestli uživatelské zadání obsahuje chyby související s databází. Další informace naleznete v tématu Návod: Zpracování chyb, ke kterým dochází při zadávání dat v ovládacím prvku Windows Forms DataGridView.
Zpracování velmi velkých datových sad pomocí virtuálního režimu Další informace naleznete v tématu Návod: Implementace virtuálního režimu v ovládacím prvku Windows Forms DataGridView.
Přizpůsobte vzhled buněk. Další informace naleznete v tématu Postupy: Přizpůsobení vzhledu buněk v ovládacím prvku Windows Forms DataGridView a Postupy: Nastavení výchozích stylů buněk pro ovládací prvek Windows Forms DataGridView.
Viz také
.NET Desktop feedback