2013-06-06 3 views
0

я следующий кодCheckedListBox DataSource не отображается правильно

clbCodes.DisplayMember = "Name"; 
clbCodes.ValueMember = "Id"; 

checkboxItemList = new List<CheckBoxItem>(); 
foreach (var uagCode in codes) 
{ 
    var checkboxItem = new CheckBoxItem 
     { 
      Id = uagCode.Code, 
      Name = uagCode.UAGLabel 
     }; 
    checkboxItemList.Add(checkboxItem); 
} 

clbCodes.DataSource = checkboxItemList; 

public class CheckBoxItem 
{ 
    public string Name { get; set; } 
    public string Id { get; set; } 
} 

Однако, когда я запускаю это, вместо того, чтобы видеть «Имя» из моего пункта, например,

"Card" 
"Toy" 
"Table" 

Я вижу

WindowsApplication1.CheckBoxItem 
WindowsApplication1.CheckBoxItem 
WindowsApplication1.CheckBoxItem 

заселена в моем ListBox

Что я сделал не так?

+0

Что такое CheckBoxItem, что вы создаете список? – DonBoitnott

+0

DisplayMemberPath = имя после строки DataSource. – Paparazzi

+0

Обновлено мое сообщение –

ответ

2

Поскольку кажется, что вы добавляете в CheckListBox коллекцию настраиваемых объектов, вы должны иметь в качестве части этого класса переопределение ToString(), которое может вернуть Name, который вы хотите отобразить.

public override String ToString() 
{ 
    return this.Name; 
} 
+1

Что? Джеремик ответил на это первым. О, мой ОП, что ты сделал? Это нечестно. ДонБойнотт, тебе так повезло. –

2

Вам необходимо переопределить ToString:

public class CheckBoxItem 
{ 
    public string Name { get; set; } 
    public string Id { get; set; } 

    public override String ToString() 
    { 
     return Name; 
    } 
} 
+0

Что относительно DisplayMember? –

+0

Это работает, но DisplayMember кажется бесполезным, поэтому не нужно назначать DisplayMember. –

+0

Я думаю, что это потому, что он использует checklistbox вместо списка, возможно, по какой-либо причине checklistbox игнорирует его – JeremyK

Смежные вопросы