【问题标题】:Translate DataGridView cells翻译 DataGridView 单元格
【发布时间】:2012-09-09 03:13:02
【问题描述】:

我的班级有 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”。最好、最干净的方法是什么?感谢您的帮助。

【问题讨论】:

  • 您还有更多代码要显示吗?您要在哪里执行翻译本身?

标签: c# datagridview bindingsource


【解决方案1】:

每个 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 设计器中进行这些设置,推荐

【讨论】:

  • 哇,这太容易了。我已经浪费了很多时间而没有任何效果,多亏了你,它现在可以完美运行了。非常感谢!
  • 如果您觉得我的回答有帮助,您可以考虑upvoting 和/或将其标记为最佳答案!详情请见FAQ
猜你喜欢
  • 1970-01-01
  • 2019-04-11
  • 2011-11-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-06
  • 2017-07-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多