Вам нужно использовать DataGridViewComboBoxColumn
.
Существует два способа заполнения выпадающего списка. Вы можете установить его вручную, используя коллекцию, возвращенную через свойство 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; }
}
Это предполагает, что в конструкторе вы добавили DataGridViewComboBoxColumn в качестве первого столбца и DataGridViewTextBoxColumn в качестве второго столбца.
Что вы должны увидеть, так это то, что в поле со списком доступны три пользователя. DataGridView должен иметь три строки из источника данных для трех учетных записей, и для каждого должно быть выбрано правильное значение поля со списком.
Ресурсом, который вы найдете очень удобным для любой разработки DataGridView, является DataGridView Faq