Como: Ligar um controle Windows Forms a um tipo
Quando você estiver criando controles que interagem com dados, você irá às vezes achar necessário para ligar um controle a um tipo, em vez de um objeto. Essa situação ocorre especialmente em tempo de design, quando os dados podem não estar disponíveis, mas os controles ligados a dados ainda precisam exibir informações da interface pública de um tipo. Por exemplo, você pode vincular um DataGridView controle a um objeto exposto por um serviço da Web e deseja que o DataGridView controle para rotular as suas colunas em tempo de design com os nomes de membro de um tipo personalizado.
É possível ligar facilmente um controle para um tipo com o BindingSource componente.
Exemplo
O exemplo de código a seguir demonstra como vincular um DataGridView o controle de um tipo personalizado usando um BindingSource componente. Quando você executar o exemplo, você observará a DataGridView intitulada colunas que refletem as propriedades de um Customer o objeto, antes do controle é preenchido com dados. O exemplo possui um botão cliente Adicionar para adicionar dados a DataGridView de controle. Quando você clica no botão, uma nova Customer objeto é adicionado a BindingSource. Em um cenário do mundo real, os dados podem ser obtidos por uma chamada para um serviço da Web ou outra fonte de dados.
Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Windows.Forms
Class Form1
Inherits Form
Private bSource As New BindingSource()
Private WithEvents button1 As Button
Private dgv As New DataGridView()
Public Sub New()
Me.button1 = New System.Windows.Forms.Button()
Me.button1.Location = New System.Drawing.Point(140, 326)
Me.button1.Name = "button1"
Me.button1.AutoSize = True
Me.button1.Text = "Add Customer"
Me.ClientSize = New System.Drawing.Size(362, 370)
Me.Controls.Add(Me.button1)
' Bind the BindingSource to the DemoCustomer type.
bSource.DataSource = GetType(DemoCustomer)
' Set up the DataGridView control.
dgv.Dock = DockStyle.Top
Me.Controls.Add(dgv)
' Bind the DataGridView control to the BindingSource.
dgv.DataSource = bSource
End Sub
Public Shared Sub Main()
Application.Run(New Form1())
End Sub
Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs) _
Handles button1.Click
bSource.Add(New DemoCustomer(DateTime.Today))
End Sub
End Class
' This simple class is used to demonstrate binding to a type.
Public Class DemoCustomer
Public Sub New()
idValue = Guid.NewGuid()
End Sub
Public Sub New(ByVal FirstOrderDate As DateTime)
FirstOrder = FirstOrderDate
idValue = Guid.NewGuid()
End Sub
' These fields hold the data that backs the public properties.
Private firstOrderDateValue As DateTime
Private idValue As Guid
Private custNameValue As String
Public Property CustomerName() As String
Get
Return custNameValue
End Get
Set(ByVal value As String)
custNameValue = value
End Set
End Property
' This is a property that represents the first order date.
Public Property FirstOrder() As DateTime
Get
Return Me.firstOrderDateValue
End Get
Set(ByVal value As DateTime)
If value <> Me.firstOrderDateValue Then
Me.firstOrderDateValue = value
End If
End Set
End Property
' This is a property that represents a customer ID.
Public ReadOnly Property ID() As Guid
Get
Return Me.idValue
End Get
End Property
End Class
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
class Form1 : Form
{
BindingSource bSource = new BindingSource();
private Button button1;
DataGridView dgv = new DataGridView();
public Form1()
{
this.button1 = new System.Windows.Forms.Button();
this.button1.Location = new System.Drawing.Point(140, 326);
this.button1.Name = "button1";
this.button1.AutoSize = true;
this.button1.Text = "Add Customer";
this.button1.Click += new System.EventHandler(this.button1_Click);
this.ClientSize = new System.Drawing.Size(362, 370);
this.Controls.Add(this.button1);
// Bind the BindingSource to the DemoCustomer type.
bSource.DataSource = typeof(DemoCustomer);
// Set up the DataGridView control.
dgv.Dock = DockStyle.Top;
this.Controls.Add(dgv);
// Bind the DataGridView control to the BindingSource.
dgv.DataSource = bSource;
}
public static void Main()
{
Application.Run(new Form1());
}
private void button1_Click(object sender, EventArgs e)
{
bSource.Add(new DemoCustomer(DateTime.Today));
}
}
// This simple class is used to demonstrate binding to a type.
public class DemoCustomer
{
public DemoCustomer()
{
idValue = Guid.NewGuid();
}
public DemoCustomer(DateTime FirstOrderDate)
{
FirstOrder = FirstOrderDate;
idValue = Guid.NewGuid();
}
// These fields hold the data that backs the public properties.
private DateTime firstOrderDateValue;
private Guid idValue;
private string custNameValue;
public string CustomerName
{
get { return custNameValue; }
set { custNameValue = value; }
}
// This is a property that represents a birth date.
public DateTime FirstOrder
{
get
{
return this.firstOrderDateValue;
}
set
{
if (value != this.firstOrderDateValue)
{
this.firstOrderDateValue = value;
}
}
}
// This is a property that represents a customer ID.
public Guid ID
{
get
{
return this.idValue;
}
}
}
Compilando o código
Este exemplo requer:
- Referências aos assemblies System.Windows.Forms e de sistema.
Para obter informações sobre como criar este exemplo a partir da linha de comando para Visual Basic ou Visual C#, consulte Compilando a partir da linha de comando (Visual Basic) ou Comando -<>>linha criando com CSC. exe. Você também pode construir este exemplo no Visual Studio colando o código em um novo projeto. Para obter mais informações, consulte Como: Compilar e executar um exemplo de código Windows Forms concluída usando Visual Studio e Como: Compilar e executar um exemplo de código Windows Forms concluída usando Visual Studio e Como: Compilar e executar um exemplo de código Windows Forms concluída usando Visual Studio e Como: Compilar e executar um exemplo de código de formulários Windows concluída usando o Visual Studio e Como: Compilar e executar um exemplo de código de formulários de Windows completa usando Visual Studio e Como compilar e executar um exemplo de código dos Windows Forms concluído usando Visual Studio.