带有绑定数据的 datagridview 中的组合框

combobox inside a datagridview with bound data

我创建了一个绑定到 Class CTag 的 Datagridview。 在 CTAG 内部,我有 2 个成员想在数据网格视图中显示:名称、区域 列是自动创建的,因为 class CTag 作为数据源连接到 Datagridview。但我想限制用户在“区域”列中输入的内容。所以在那个地方我想要一个组合框。 我已经找到了如何在 datagridview 中添加一个带有选项列表的新组合框,但它以这种方式创建了一个额外的列。

private BindingList<string> listOfAreas         = new BindingList<string>();

listOfAreas.Add("PE");
listOfAreas.Add("PA");
listOfAreas.Add("MK");
listOfAreas.Add("DB");
listOfAreas.Add("CT");
listOfAreas.Add("TM");

dgvTags.DataSource = listOfTags;

DataGridViewComboBoxColumn area = new DataGridViewComboBoxColumn();
area.Name = "DataArea";
area.DataPropertyName = "DataArea";
area.DataSource = listOfAreas;
dgvTags.Columns.Add(area);

我错过了什么才能让这个正确?

移动这一行:

dgvTags.DataSource = listOfTags;

在此之后:

dgvTags.Columns.Add(area);

解释:

当 AutoGenerateColumns 属性 为 true(默认)时,当您设置 DataSource 时,将为列表类型的每个 属性 创建列 如果没有属性.

的列

因此,如果在将列放入 DataSource 之前添加该列,则可以避免出现双列。