簡體   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