c#DataGridView自动生成列仅显示基类的属性

c#DataGridView自动生成列仅显示基类的属性,c#,winforms,datagridview,C#,Winforms,Datagridview,我有一个基类(person)和2个派生类(person\u注册)和派生类(person\u未注册) 我有一个**的内部对象列表,包括注册的人和未注册的人** 我有一个dataGridView,用于显示列表,我设置了dataGridView.Datasource=registry(列表),使用dataGridView.autogeneratecolumns=true 但是dataGridView只显示基类属性的列,而不显示派生类的属性 为什么** {String*Name*;String*姓氏*;

我有一个基类(person)2个派生类(person\u注册)和派生类(person\u未注册) 我有一个**的内部对象列表,包括注册的人和未注册的人**

我有一个dataGridView,用于显示列表,我设置了dataGridView.Datasource=registry(列表),使用dataGridView.autogeneratecolumns=true

但是dataGridView只显示基类属性的列,而不显示派生类的属性

为什么** {String*Name*;String*姓氏*;} 公共**类注册:人** {datetime*注册表的日期*;} 公共**类注册表:列表** {公共新作废添加(个人项目) ....} 表格表格:

dgvNotRegister.DataSource = this.anagrafica; //list of person<br>
dgvNonRegister.AutoGenerateColumns = true;

dgvNotRegister **show**:
Name Surname 
dgvNotRegister.DataSource=this.anagrafica;//人员列表
dgvNonRegister.AutoGenerateColumns=true; dgvNotRegister**显示**: 姓名

但不是:
显示注册表日期

它不会显示,因为您将它向后显示

它应该是
Person:registed
而不是
registed:Person

尝试以下课程:

public class Person : Registered
{
    public int ID { set; get; }
    public string FirstName { set; get; }
    public string LastName { set; get; }
}

public class Registered
{
    public DateTime DateOfRegister { set; get; }
}
然后按如下方式填充dataGridView:

// Create the Data
List<Person> myData = new List<Person>();
myData.Add(new Person() { ID = 5, FirstName = "Jamie", LastName = "White", DateOfRegister = Convert.ToDateTime("Dec 25, 2015") });
myData.Add(new Person() { ID = 10, FirstName = "Mike", LastName = "Smith", DateOfRegister = Convert.ToDateTime("Jan 5, 2016") });
myData.Add(new Person() { ID = 25, FirstName = "Joe", LastName = "Yang", DateOfRegister = Convert.ToDateTime("Feb 28, 2016") });

// Pass the data to the dataGrid
dataGridView1.DataSource = myData;
//创建数据
List myData=new List();
myData.Add(newperson(){ID=5,FirstName=“Jamie”,LastName=“White”,DateOfRegister=Convert.ToDateTime(“2015年12月25日”)});
myData.Add(newperson(){ID=10,FirstName=“Mike”,LastName=“Smith”,DateOfRegister=Convert.ToDateTime(“2016年1月5日”)});
myData.Add(newperson(){ID=25,FirstName=“Joe”,LastName=“Yang”,DateOfRegister=Convert.ToDateTime(“2016年2月28日”)});
//将数据传递到dataGrid
dataGridView1.DataSource=myData;

如果您创建了另一个派生自person的类并将其添加到人员列表中,会发生什么?您希望它也显示该类的属性吗?如果它们与派生自person的另一个类不同,会发生什么?如果您实际显示与您的问题和/或问题相关的所有代码,会发生什么e因为您使用了人员列表(基类)作为数据源。显示代码,很难理解。真的吗?Class Person只包含
名称
姓氏
属性。您的
DataGridView
的数据源是
List
。这就是DataGridView不生成
dateOfRegister
的原因。将数据源更改为
List
// Create the Data
List<Person> myData = new List<Person>();
myData.Add(new Person() { ID = 5, FirstName = "Jamie", LastName = "White", DateOfRegister = Convert.ToDateTime("Dec 25, 2015") });
myData.Add(new Person() { ID = 10, FirstName = "Mike", LastName = "Smith", DateOfRegister = Convert.ToDateTime("Jan 5, 2016") });
myData.Add(new Person() { ID = 25, FirstName = "Joe", LastName = "Yang", DateOfRegister = Convert.ToDateTime("Feb 28, 2016") });

// Pass the data to the dataGrid
dataGridView1.DataSource = myData;