2013-05-18 127 views
0

我有一個BindingList對象。這些對象包含要通過數據綁定視圖顯示的公共屬性。不幸的是,我無法獲得返回包含對象的字段數據的屬性。就拿下面的人爲的例子:Datagridview和包含對象的屬性

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:屬性訪問.... 發生以下異常:「對象引用不設置爲一個對象.'.....

M的一個實例確保一個實例總是在容器對象的構造函數中創建,但這不能解決問題。有什麼建議麼?這是網2.0上

p.s.數據由網格顯示,只是這個錯誤不斷彈出,表示引用沒有設置爲實例,即使它顯然是。這必須是一個winforms問題。

UPDATE:將ChimpDiet從一個類更改爲一個結構體將刪除錯誤。 但我需要它是一個班級。這對我來說沒有意義。

回答

0

好吧,事實證明,DataGridView希望包含的對象有一個默認的構造函數(無參數),它初始化其每一個字段數據。我不知道爲什麼(如果有人可以點亮這個,請做),但我的程序現在正在工作,所以就是這樣。

0

這是因爲您的某個屬性正在返回類ChimpDiet的屬性。當DataGridView試圖顯示它的價值時,它沒有初始化它輪胎訪問diet.favoritefood,當diet爲空它會拋出異常。

相關問題