Procedura: associare oggetti ai controlli DataGridView di Windows Form
Nell'esempio di codice seguente viene illustrato come associare un insieme di oggetti a un controllo DataGridView in modo che ciascun oggetto venga visualizzato come riga separata. Viene inoltre descritto come visualizzare una proprietà con un tipo di enumerazione in una classe DataGridViewComboBoxColumn in maniera che l'elenco a discesa della casella combinata contenga i valori di enumerazione.
Esempio
Imports System.Windows.Forms
Imports System.Collections.Generic
Public Enum Title
King
Sir
End Enum
Public Class EnumsAndComboBox
Inherits Form
Private flow As New FlowLayoutPanel()
Private WithEvents checkForChange As Button = New Button()
Private knights As List(Of Knight)
Private dataGridView1 As New DataGridView()
Public Sub New()
MyBase.New()
SetupForm()
SetupGrid()
End Sub
Private Sub SetupForm()
AutoSize = True
End Sub
Private Sub SetupGrid()
knights = New List(Of Knight)
knights.Add(New Knight(Title.King, "Uther", True))
knights.Add(New Knight(Title.King, "Arthur", True))
knights.Add(New Knight(Title.Sir, "Mordred", False))
knights.Add(New Knight(Title.Sir, "Gawain", True))
knights.Add(New Knight(Title.Sir, "Galahad", True))
' Initialize the DataGridView.
dataGridView1.AutoGenerateColumns = False
dataGridView1.AutoSize = True
dataGridView1.DataSource = knights
dataGridView1.Columns.Add(CreateComboBoxWithEnums())
' Initialize and add a text box column.
Dim column As DataGridViewColumn = _
New DataGridViewTextBoxColumn()
column.DataPropertyName = "Name"
column.Name = "Knight"
dataGridView1.Columns.Add(column)
' Initialize and add a check box column.
column = New DataGridViewCheckBoxColumn()
column.DataPropertyName = "GoodGuy"
column.Name = "Good"
dataGridView1.Columns.Add(column)
' Initialize the form.
Controls.Add(dataGridView1)
Me.AutoSize = True
Me.Text = "DataGridView object binding demo"
End Sub
Private Function CreateComboBoxWithEnums() As DataGridViewComboBoxColumn
Dim combo As New DataGridViewComboBoxColumn()
combo.DataSource = [Enum].GetValues(GetType(Title))
combo.DataPropertyName = "Title"
combo.Name = "Title"
Return combo
End Function
#Region "business object"
Private Class Knight
Private hisName As String
Private good As Boolean
Private hisTitle As Title
Public Sub New(ByVal title As Title, ByVal name As String, _
ByVal good As Boolean)
hisTitle = title
hisName = name
Me.good = good
End Sub
Public Property Name() As String
Get
Return hisName
End Get
Set(ByVal Value As String)
hisName = Value
End Set
End Property
Public Property GoodGuy() As Boolean
Get
Return good
End Get
Set(ByVal Value As Boolean)
good = Value
End Set
End Property
Public Property Title() As Title
Get
Return hisTitle
End Get
Set(ByVal Value As Title)
hisTitle = Value
End Set
End Property
End Class
#End Region
Public Shared Sub Main()
Application.Run(New EnumsAndComboBox())
End Sub
End Class
using System;
using System.Windows.Forms;
public enum Title
{
King,
Sir
};
public class EnumsAndComboBox : Form
{
private DataGridView dataGridView1 = new DataGridView();
private BindingSource bindingSource1 = new BindingSource();
public EnumsAndComboBox()
{
this.Load += new System.EventHandler(EnumsAndComboBox_Load);
}
private void EnumsAndComboBox_Load(object sender, System.EventArgs e)
{
// Populate the data source.
bindingSource1.Add(new Knight(Title.King, "Uther", true));
bindingSource1.Add(new Knight(Title.King, "Arthur", true));
bindingSource1.Add(new Knight(Title.Sir, "Mordred", false));
bindingSource1.Add(new Knight(Title.Sir, "Gawain", true));
bindingSource1.Add(new Knight(Title.Sir, "Galahad", true));
// Initialize the DataGridView.
dataGridView1.AutoGenerateColumns = false;
dataGridView1.AutoSize = true;
dataGridView1.DataSource = bindingSource1;
dataGridView1.Columns.Add(CreateComboBoxWithEnums());
// Initialize and add a text box column.
DataGridViewColumn column = new DataGridViewTextBoxColumn();
column.DataPropertyName = "Name";
column.Name = "Knight";
dataGridView1.Columns.Add(column);
// Initialize and add a check box column.
column = new DataGridViewCheckBoxColumn();
column.DataPropertyName = "GoodGuy";
column.Name = "Good";
dataGridView1.Columns.Add(column);
// Initialize the form.
this.Controls.Add(dataGridView1);
this.AutoSize = true;
this.Text = "DataGridView object binding demo";
}
DataGridViewComboBoxColumn CreateComboBoxWithEnums()
{
DataGridViewComboBoxColumn combo = new DataGridViewComboBoxColumn();
combo.DataSource = Enum.GetValues(typeof(Title));
combo.DataPropertyName = "Title";
combo.Name = "Title";
return combo;
}
#region "business object"
private class Knight
{
private string hisName;
private bool good;
private Title hisTitle;
public Knight(Title title, string name, bool good)
{
hisTitle = title;
hisName = name;
this.good = good;
}
public Knight()
{
hisTitle = Title.Sir;
hisName = "<enter name>";
good = true;
}
public string Name
{
get
{
return hisName;
}
set
{
hisName = value;
}
}
public bool GoodGuy
{
get
{
return good;
}
set
{
good = value;
}
}
public Title Title
{
get
{
return hisTitle;
}
set
{
hisTitle = value;
}
}
}
#endregion
[STAThread]
public static void Main()
{
Application.Run(new EnumsAndComboBox());
}
}
Compilazione del codice
L'esempio presenta i seguenti requisiti:
- Riferimenti agli assembly System e System.Windows.Forms.
Per informazioni sulla compilazione di questo esempio dalla riga di comando per Visual Basic o Visual C#, vedere Building from the Command Line (Visual Basic) o Compilazione dalla riga di comando con csc.exe. È anche possibile compilare questo esempio in Visual Studio incollando il codice in un nuovo progetto. Per ulteriori informazioni, vedere Procedura: compilare ed eseguire un esempio di codice Windows Form completo tramite Visual Studio e Procedura: compilare ed eseguire un esempio di codice Windows Form completo tramite Visual Studio e Procedura: compilare ed eseguire un esempio di codice Windows Form completo tramite Visual Studio e Procedura: compilare ed eseguire un esempio di codice Windows Form completo tramite Visual Studio e Procedura: compilare ed eseguire un esempio di codice Windows Form completo tramite Visual Studio.
Vedere anche
Attività
Procedura: accedere a oggetti associati a righe DataGridView di Windows Form
Riferimenti
Altre risorse
Visualizzazione di dati nel controllo DataGridView Windows Form