2011-11-14 38 views
4

下面是代碼:爲什麼我的winforms組合框顯示對象的名稱而不是我指定的顯示成員?

cmbVegas.Items.AddRange((VegasPegasusCourseObject[])convertableCourses.ToArray()); 
cmbVegas.DisplayMember = "VegasCourseName"; 
cmbVegas.ValueMember = "CourseMapID"; 

convertableCourses是List<VegasPegasusCourseObject>

這是我從獲取列表:

public List<VegasPegasusCourseObject> GetConvertedCourses() 
     { 
      using (PanamaDataContext db = new PanamaDataContext()) 
      { 
       IQueryable<VegasPegasusCourseObject> vegasCourses = from cm in db.VegasToPegasusCourseMaps 
            join c in db.Courses on cm.VegasCourseID equals c.CourseID 
            join cp in db.Courses on cm.PegasusCourseID equals cp.CourseID 
            select new VegasPegasusCourseObject 
            { 
             CourseMapID = cm.VPCMapID, 
             VegasCourseName = c.CourseName, 
             VegasCourseID = cm.VegasCourseID, 
             PegasusCourseID = cm.PegasusCourseID, 
             PegasusCourseName = cp.CourseName 
            }; 

       return vegasCourses.ToList(); 
      } 
     } 

這裏是OBJ DEF:

class VegasPegasusCourseObject 
    { 
     public int CourseMapID; 

     public string VegasCourseName; 
     public int VegasCourseID; 

     public string PegasusCourseName; 
     public int PegasusCourseID; 
    } 

但是,當我把這個寶寶開火時,這就是我所有的ETTING:

enter image description here

+6

是'VegasCourseName'屬性或字段? –

+0

啊忘了def。在上面添加它。 – BigOmega

+0

我問過這是一個財產還是一個領域並不表明這個特定事實可能很重要? –

回答

9

按照上述意見的

+1

你不知道我剛學過多少東西。 – BigOmega

+0

...並確保該屬性是範圍可見的(即公共或內部,具體取決於) – downwitch

1

從文檔爲DisplayMember

如果指定的屬性不在對象上存在或DisplayMember的值是空字符串(「」),結果該對象的ToString方法將被顯示。

VegasPegasusCourseObject中沒有名爲「VegasCourseName」的屬性,而是獲取ClassName(ToString()的默認實現)。 VegasPegasusCourseObject類

-2

覆蓋ToString()方法,這個問題是由於「VegasCourseName」已被寫入作爲一個領域,而不是財產的事實。因此,ToString實現已被顯示。

使用,而不是一個屬性:

class VegasPegasusCourseObject 
{ 
    public string VegasCourseName { get; set;} 
} 
相關問題