0
  class A{
  int a;
  B b;
  }
  class B{
  int c,d;
  {
  .
  .
  .
  List<A>list = new List<A>();
  Populating list with object....

  BindingSource bindingSource = new BindingSource();
  dataGridView1.DataSource = bindingSource;
  dataGridView1.Update();
  bindingSource.DataSource = list;

是否可以强制 dataGridView1 显示 3 列,其中包含来自 int a、c、d 的值,而无需创建新类并将数据从 A 类复制到新类?

4

2 回答 2

1

dataGridView 列只允许绑定到第一级属性。

如果它不是大程序,或者如果你在写作的建模阶段更容易,那就是创建一个所有项目都在第一级的新类。

但是,如果您真的需要该模型,请阅读以下内容:

类型描述提供者

这应该可以帮助您制作您想要的东西,但是对于较小的程序(或者如果它真的没有必要)更快更容易是第一种方法;)

于 2013-07-06T23:45:49.557 回答
0

是否可以强制 dataGridView1 显示 3 列,其中包含来自 int a、c、d 的值,而无需创建新类并将数据从 A 类复制到新类?

您可以使用数据表。设置列,然后遍历列表并将每个 A 的每个元素添加为 DataTable 中的新行。然后使用 DataTable 作为 DGV 的 DataSource。

在我看来,虽然使用列表视图会完成同样的事情。

另一种选择是使 b 私有并且在 A 中具有公共属性,这与 b 中的属性相呼应。这样,您想要的所有属性都是第一级

于 2013-07-07T01:42:04.233 回答