110,538
社区成员
发帖
与我相关
我的任务
分享
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace TestDataGridViewComboBoxColumn
{
public partial class Form1 : Form
{
BindingSource bindingSource1 = new BindingSource();
DataGridView dataGridView1 = new DataGridView();
public enum Title
{
King,
Sir
}
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
EnumsAndComboBox_Load(null, null);
}
private void EnumsAndComboBox_Load(object sender, System.EventArgs e)
{
// Populate the data source.
bindingSource1.Add(new Knight(Title.King));
bindingSource1.Add(new Knight(Title.King));
bindingSource1.Add(new Knight(Title.Sir));
bindingSource1.Add(new Knight(Title.Sir));
bindingSource1.Add(new Knight(Title.Sir));
// Initialize the DataGridView.
dataGridView1.AutoGenerateColumns = false;
dataGridView1.AutoSize = true;
dataGridView1.DataSource = bindingSource1;
dataGridView1.Columns.Add(CreateComboBoxWithEnums());
// Initialize the form.
this.Controls.Add(dataGridView1);
this.AutoSize = true;
this.Text = "DataGridView object binding demo";
}
DataGridViewComboBoxColumn CreateComboBoxWithEnums()
{
DataGridViewComboBoxColumn combo = new DataGridViewComboBoxColumn();
combo.ValueType = typeof(Title);
combo.DataSource = new Title[]{Title.King, Title.Sir}
.Select(element => new {display = element.ToString(), value = Convert.ToInt32(element) })
.ToList();
combo.DisplayMember = "display";
combo.ValueMember = "value";
combo.DataPropertyName = "Title";
combo.Name = "Title";
return combo;
}
#region "business object"
private class Knight
{
private Title hisTitle;
public Knight(Title title)
{
hisTitle = title;
}
public Knight()
{
hisTitle = Title.Sir;
}
public Title Title
{
get
{
return hisTitle;
}
set
{
hisTitle = value;
}
}
}
#endregion
}
}