0

我的班级有 4 个公共 int 属性。我要做的是将List绑定到BindingSource作为DataSource,并将BindingSource绑定到DataGridView。一切正常,现在我正在尝试将单元格值“翻译”为其他内容。例如我有:

List<MyClass> list = new List<MyClass>()
list.Add(new MyClass(1,2,3,4))
list.Add(new MyClass(0,2,3,4))

所以在 DataGridView 中它看起来像这样:

----------------
Row1 1|2|3|4
----------------
Row2 0|2|3|4
----------------

但我想做的是像这样:

----------------
Row1 "Dog"|2|3|4
----------------
Row2 "Cat"|2|3|4
----------------

如您所见,我班级的“0”值在 DataGridView 中显示为“Cat”,“1”显示为“Dog”。我希望它是 ComboBoxCell 并在两个方向上工作。将“Dog”更改为“Cat”应该将基础列表中的值从“1”更改为“0”。最好、最干净的方法是什么?谢谢你的帮助。

4

1 回答 1

0

每个 DataGridView 都有一个列定义的集合。在该列表中,当前有四个textBoxColumns。这就是为什么你看到

----------------
Row1 1|2|3|4
----------------
Row2 0|2|3|4
----------------

您现在必须将第一列的列定义更改为DataGridViewComboBoxColumn。之后,您可以为此列设置数据源(例如:包含Dog、Cat aso 的新 BindingList )并将您的 sourceColumn 绑定到DataPropertyName

// short demo code, MUST BE ADAPTED
dgvCOMBOBOXCOLUMN.DataSource = YOUR_CATS_DOGS_BS;
dgvCOMBOBOXCOLUMN.DisplayMember = COLUMNNAME_OF_BS_TO_SHOW;
dgvCOMBOBOXCOLUMN.Value = COLUMNNAME_OF_BS_WITH_ACCORDING_IDs;
dgvCOMBOBOXCOLUMN.DataPropertyName = COLUMNNAME_OF_MYCLASS_TO_BIN;

当然你可以在VS 设计器中进行这些设置,推荐

于 2012-09-16T20:29:04.920 回答