繁体   English   中英

Datagridview和包含对象的属性

[英]Datagridview and properties to Contained Objects

我有一个对象的BindingList。 这些对象包含将由databindingview显示的公共属性。 不幸的是,我无法获得返回包含对象的字段数据的属性。 以下面的人为例子为例:

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:属性访问器....引发以下异常:'对象引用未设置为对象的实例。'.....

确保始终在容器对象的构造函数中创建一个实例,但这不能解决问题。 有什么建议么? 这是在Net 2.0上

ps数据由网格显示,只是此错误不断弹出,表示未将引用设置为实例,即使它显然是实例也是如此。 这一定是Winforms问题。

更新 :将ChimpDiet从类更改为结构可消除错误。 但是我需要成为一堂课。 这对我来说毫无意义。

好的,事实证明DataGridView希望包含的对象具有默认的构造函数(无参数),该构造函数初始化其字段数据的每个单个数据。 我不知道为什么会这样(如果有人可以对此有所帮助,请这样做),但是我的程序现在正在工作,就是这样。

这是因为您的属性之一是ChimpDiet类的返回属性。 如果没有事先对其进行初始化时DataGridView是试图证明价值它的轮胎访问diet.favoritefooddiet为null,抛出异常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM