为什么我的winforms组合框显示对象的名称而不是我指定的显示成员?

Met*_*uru 4 c# combobox list linq-to-sql winforms

这是代码:

cmbVegas.Items.AddRange((VegasPegasusCourseObject[])convertableCourses.ToArray());
cmbVegas.DisplayMember = "VegasCourseName";
cmbVegas.ValueMember = "CourseMapID";
Run Code Online (Sandbox Code Playgroud)

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();
            }
        }
Run Code Online (Sandbox Code Playgroud)

这是obj def:

class VegasPegasusCourseObject
    {
        public int CourseMapID;

        public string VegasCourseName;
        public int VegasCourseID;

        public string PegasusCourseName;
        public int PegasusCourseID;
    }
Run Code Online (Sandbox Code Playgroud)

然而,当我解雇这个婴儿时,这就是我所得到的:

在此输入图像描述

Red*_*dog 11

根据上面的评论,问题是由于"VegasCourseName"被写为字段而不是属性.因此,ToString已经示出了实现.

改为使用属性:

class VegasPegasusCourseObject
{
    public string VegasCourseName { get; set;}
}
Run Code Online (Sandbox Code Playgroud)