C# 如何从DataGridView中的ComboBox获取或设置数据

C# 如何从DataGridView中的ComboBox获取或设置数据,c#,winforms,datagridview,combobox,C#,Winforms,Datagridview,Combobox,在C#.net中,我希望在DataGridView的每个单元格中获取或设置ComboBox的数据 我该怎么办 谢谢。首先,如果您尚未这样做,请决定如何向DataGridView提供数据(虚拟模式、数据绑定等) 然后将用户可以选择的值添加到列标题上的项集合中(假设它是DataGridViewComboxColumn) 然后,使用您选择的底层数据提供方法设置各个单元格的值。您需要使用DataGridViewComboxColumn 填充下拉列表有两种方法。您可以使用通过Items属性返回的集合手动设

在C#.net中,我希望在DataGridView的每个单元格中获取或设置ComboBox的数据 我该怎么办


谢谢。

首先,如果您尚未这样做,请决定如何向
DataGridView
提供数据(虚拟模式、数据绑定等)

然后将用户可以选择的值添加到列标题上的
集合中(假设它是
DataGridViewComboxColumn


然后,使用您选择的底层数据提供方法设置各个单元格的值。

您需要使用
DataGridViewComboxColumn

填充下拉列表有两种方法。您可以使用通过Items属性返回的集合手动设置它,也可以通过DataSource、DisplayMember和ValueMember属性将列绑定到数据源。这与WinForms ComboBox控件相同

以编程方式设置数据源的示例如下:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        dataGridView1.AutoGenerateColumns = false;

        List<User> users = new List<User>();
        users.Add(new User(){Name = "Fred", Id = 1});
        users.Add(new User(){Name = "Jill", Id = 2});
        users.Add(new User(){Name = "Bob", Id = 3});

        List<Account> accounts = new List<Account>();
        accounts.Add(new Account(){AccountName = "Mr Smith", UserId = 1});
        accounts.Add(new Account() { AccountName = "Ms Brown", UserId = 2 });
        accounts.Add(new Account() { AccountName = "Mr Smith 2", UserId = 1 });

        dataGridView1.DataSource = accounts;

        DataGridViewTextBoxColumn col1 = dataGridView1.Columns[1] as DataGridViewTextBoxColumn;
        col1.DataPropertyName = "AccountName";

        DataGridViewComboBoxColumn col = dataGridView1.Columns[0] as DataGridViewComboBoxColumn;
        col.DataSource = users;
        col.DisplayMember = "Name";
        col.DataPropertyName = "UserId";
        col.ValueMember = "Id";
    }

}

public class User
{
    public string Name { get; set; }
    public int Id { get; set; }
}

public class Account
{
    public string AccountName { get; set; }
    public int UserId { get; set; }
}
公共部分类表单1:表单
{
公共表格1()
{
初始化组件();
dataGridView1.AutoGenerateColumns=false;
列表用户=新列表();
添加(新用户(){Name=“Fred”,Id=1});
添加(新用户(){Name=“Jill”,Id=2});
添加(新用户(){Name=“Bob”,Id=3});
列表

试试这个

private void PopulateData()
{            
   while (condition) //Columns[0] is where your ComboBoxColumn index
      (dataGridView1.Columns[0] as DataGridViewComboBoxColumn)
      .Items.Add("Item 1");
}