C# 使datagridview从内部对象读取 A类{ INTA; B B; } B类{ int c,d; { . . . Listlist=新列表(); 正在用对象填充列表。。。。 BindingSource BindingSource=新的BindingSource(); dataGridView1.DataSource=bindingSource; dataGridView1.Update(); bindingSource.DataSource=列表;

C# 使datagridview从内部对象读取 A类{ INTA; B B; } B类{ int c,d; { . . . Listlist=新列表(); 正在用对象填充列表。。。。 BindingSource BindingSource=新的BindingSource(); dataGridView1.DataSource=bindingSource; dataGridView1.Update(); bindingSource.DataSource=列表;,c#,datagridview,C#,Datagridview,是否可以强制dataGridView1显示包含int a、c、d值的3列 如果不创建新类并将数据从类A复制到新类,dataGridView列只允许绑定到一级属性 如果它不是一个大的程序,或者如果你在建模阶段写的更容易,那就创建一个新的类,所有的项都在第一级 但如果你真的需要这个模型,请阅读以下内容: 这应该有助于你制作你想要的东西,但对于较小的程序(或者如果真的没有必要的话),第一种方法是更快、更简单;) 是否可以强制dataGridView1显示包含int a、c、d值的3列,而不创建新类并

是否可以强制dataGridView1显示包含int a、c、d值的3列
如果不创建新类并将数据从类A复制到新类,dataGridView列只允许绑定到一级属性

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

但如果你真的需要这个模型,请阅读以下内容:

这应该有助于你制作你想要的东西,但对于较小的程序(或者如果真的没有必要的话),第一种方法是更快、更简单;)

是否可以强制dataGridView1显示包含int a、c、d值的3列,而不创建新类并将数据从类a复制到新类

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

在我看来,使用listview可以完成同样的事情


另一种选择是将b设为私有,并在A中设置为公共属性,这与b中的属性相呼应。这样,您需要的所有属性都是第一级的

您可以指定绑定列,我如何实现这一点?
  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;