C# Datagridview和包含对象的属性
我有一个对象的绑定列表。这些对象包含要由databindingview显示的公共属性。不幸的是,我无法获取返回包含对象的字段数据的属性。以下面人为的例子为例:C# Datagridview和包含对象的属性,c#,winforms,datagridview,.net-2.0,C#,Winforms,Datagridview,.net 2.0,我有一个对象的绑定列表。这些对象包含要由databindingview显示的公共属性。不幸的是,我无法获取返回包含对象的字段数据的属性。以下面人为的例子为例: Public Class ChimpDiet { public string favoritefood; } Public Class Chimpanzee { private ChimpDiet diet; [DisplayName("Chimp's favorite food")] public string f
Public Class ChimpDiet
{
public string favoritefood;
}
Public Class Chimpanzee
{
private ChimpDiet diet;
[DisplayName("Chimp's favorite food")]
public string favoritefood
{ get { return diet.favoritefood; } }
[DisplayName("Chimp's nickname")]
public string nickname { get; set; }
public Chimpanzee()
{
diet = new ChimpDiet();
}
}
当我将黑猩猩的BindingList设置为datagridview的数据源时,属性favoritefood会导致错误弹出:
DataGridView中发生以下异常:System.Reflection.TargetInvocationException:属性访问器。。。。 引发了以下异常:“对象引用未设置为对象的实例” 确保始终在容器对象的构造函数中创建实例,但这并不能解决问题。有什么建议吗?这是在NET2.0上 p、 数据是由网格显示的,只是这个错误不断弹出,表示引用未设置为实例,即使它显然是。这一定是winforms的问题 更新:将类更改为结构将删除错误。
但我需要它成为一门课。这对我来说毫无意义。好的,事实证明DataGridView希望包含的对象有一个默认构造函数(没有参数),它初始化它的每个字段数据。我不知道为什么(如果有人能解释一下,请这么做),但我的程序现在正在运行,就是这样。这是因为您的一个属性正在返回类
的属性。当DataGridView
试图显示其访问diet.favoritefood
的值时,不预先初始化它,当diet
为空时,它抛出异常