Demonstra Passo a passo: Criando um controle DataGridView do Windows Forms
Freqüentemente, você poderá exibir dados tabulares, não é proveniente de um banco de dados. Por exemplo, convém mostrar o conteúdo de uma matriz bidimensional de seqüências de caracteres. O DataGridView classe fornece uma maneira fácil e altamente personalizável para exibir dados sem ligação a uma fonte de dados. Esta explicação passo a passo mostra como preencher um DataGridView controlar e gerenciar a adição e exclusão de linhas em "não acoplado" modo. Por padrão, o usuário pode adicionar novas linhas. Para impedir a adição de linha, defina a AllowUserToAddRows é a propriedade false.
Para copiar o código deste tópico como uma única lista, consulte Como: Criar um controle DataGridView do Windows Forms.
Criando o formulário
Para usar um controle de DataGridView não acoplado
Criar uma classe que deriva de Form e contém as seguintes declarações de variáveis e Main método.
Imports System 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()> _ Public Shared Sub Main() Application.EnableVisualStyles() Application.Run(New Form1()) End Sub End Class
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(); ... [STAThreadAttribute()] static void Main() { Application.EnableVisualStyles(); Application.Run(new Form1()); } }
Implementar um SetupLayout método na definição de classe do formulário para configurar de layout. o formulário
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
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); }
Criar um SetupDataGridView método para configurar o DataGridView colunas e propriedades.
Esse método primeiro adiciona o DataGridView o controle no formulário Controls coleção. Em seguida, o número de colunas a serem exibidas é definido usando o ColumnCount propriedade. O estilo padrão para os cabeçalhos de coluna é definido, definindo a BackColor, ForeColor, e Font Propriedades da DataGridViewCellStyle retornado pela ColumnHeadersDefaultCellStyle propriedade.
Propriedades de layout e aparência são definidas e, em seguida, recebem os nomes de coluna. Quando esse método é encerrado, o DataGridView controle está pronto para ser preenchido.
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
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); }
Criar um PopulateDataGridView método para adicionar linhas para o DataGridView de controle.
Cada linha representa uma música e suas informações associadas.
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
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; }
Com os métodos de utilitário no lugar, você pode anexar manipuladores de eventos.
Você manipulará o Add e Excluir dos botões. Clickeventos, o formulário Load evento e o DataGridView do controle CellFormatting de evento.
Quando o Add do botão Click evento é gerado, uma linha nova e vazia é adicionada para a DataGridView.
Quando o Excluir do botão Click evento é gerado, a linha selecionada é excluída, a menos que ele seja a linha para novos registros, que permite ao usuário adicionar novas linhas. Esta linha é sempre a última linha de DataGridView de controle.
Quando o formulário Load evento é gerado, o SetupLayout, SetupDataGridView, e PopulateDataGridView são chamados de métodos de utilitário.
Quando o CellFormatting evento é gerado, cada célula da Date coluna estiver formatada como uma data por extenso, a menos que o valor da célula não pode ser analisado.
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
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); } }
Testando o aplicativo
Agora você pode testar o formulário para certificar-se de que ele funciona comforme o esperado.
Para testar o formulário
Pressione F5 para executar o aplicativo.
Você verá um DataGridView controle que exibe as músicas listadas na PopulateDataGridView. Você pode adicionar novas linhas com o Adicionar linha botão e você pode excluir linhas selecionadas com o Excluir linha botão. O não acoplado DataGridView o controle é o armazenamento de dados e seus dados não independentes de qualquer fonte externa, como um DataSet ou uma matriz.
Próximas etapas
Este aplicativo oferece a você uma noção básica sobre o DataGridView de recursos. do controle Você pode personalizar a aparência e comportamento da DataGridView o controle de várias maneiras:
Alterar estilos de borda e o cabeçalho. Para obter mais informações, consulte Como: Alterar a borda e os estilos de linha de grade no Windows Forms DataGridView Control.
Permitir ou restringir a entrada do usuário para o DataGridView de controle. Para obter mais informações, consulte Como: Impedir a adição de linha e de exclusão no controle do Windows Forms DataGridView e Como: Tornar colunas somente leitura no Windows Forms DataGridView Control.
Verificar a entrada do usuário para erros relacionados a banco de dados. Para obter mais informações, consulte Demonstra Passo a passo: Tratamento de erros que ocorrem durante a entrada de dados em Windows Forms DataGridView Control.
Lidar com grandes conjuntos de dados usando o modo virtual. Para obter mais informações, consulte Demonstra Passo a passo: A implementação de modo Virtual o controle DataGridView do Windows Forms.
Personalize a aparência das células. Para obter mais informações, consulte Como: Personalizar a aparência de células em que o controle DataGridView do Windows Forms e Como: Definir estilos de célula padrão para o controle DataGridView do Windows Forms.
Consulte também
Tarefas
Como: Criar um controle DataGridView do Windows Forms
Referência
Conceitos
Modos de exibição de dados no controle DataGridView do Windows Forms