Почему в поле со списком winforms отображается имя объекта, а не отображаемый элемент? - PullRequest
4 голосов
/ 15 ноября 2011

Вот код:

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

converttableCourses - это 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;
    }

Однако, когда я увольняю этого ребенка, это все, что я получаю:

enter image description here

Ответы [ 3 ]

11 голосов
/ 15 ноября 2011

Согласно комментариям выше, проблема связана с тем, что VegasCourseName было написано как поле, а не как свойство.Поэтому вместо этого была показана реализация ToString.

Вместо этого используйте свойство:

class VegasPegasusCourseObject
{
    public string VegasCourseName { get; set;}
}
1 голос
/ 15 ноября 2011

Из документов на DisplayMember :

Если указанное свойство не существует в объекте или значение DisplayMember является пустой строкой (""), вместо этого отображаются результаты метода ToString объекта.

У вас нет свойства с именем «VegasCourseName» в VegasPegasusCourseObject, и вместо этого вы получаете ClassName (реализация ToString () по умолчанию).

0 голосов
/ 15 ноября 2011

Переопределить метод ToString () класса VegasPegasusCourseObject

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...