2009-12-16 23 views
0

我遇到了在C#中的选中列表框中显示对象的问题。我可以添加对象,但是当对象显示给用户时,程序会将复选框选择输出为Salesform.order,而不是像我想要的那样在订单类中调用tostring方法。这导致多个订单显示为相同的事物:“Salesform.order”。我在C#中的checkedlistbox显示了它要显示的对象的类型,但不是它的名称

orderCheckList.Items.Add(orderUp); 

(这里,orderUp是领域的订单,如客户名称等)

谁能帮助?我知道我忽略了一个简单的解决方案。

回答

6

CheckedListBoxDisplayMember设置为您要显示的属性。例如:

orderCheckList.DisplayMember = "Title"; 
// Now orderUp.Title will be displayed 

(重写ToString()也能发挥作用,通过Ragepotato的建议,但使用DisplayMember更加灵活,因为它意味着你可以使用各种不同的上下文中相同的数据类型)

示例代码:

using System.Windows.Forms; 

class Test 
{ 
    static void Main() 
    { 
     Form f = new Form 
     { 
      Controls = 
      { 
       new CheckedListBox 
       { 
        Items = 
        { 
         new { FirstName = "Jon", LastName = "Skeet" }, 
         new { FirstName = "Holly", LastName = "Skeet" } 
        }, 
        DisplayMember = "FirstName" 
       } 
      } 
     }; 
     Application.Run(f); 
    } 
} 
+0

感谢您的回答。但是,我怎样才能访问“姓氏”?类型是匿名的,所以我不能施放它。 – Paval 2013-05-20 16:51:24

+1

@Paval:从哪里?您通常会设置“ValueMember =”LastName“”,然后获取值。 – 2013-05-20 22:41:48

4

.ToString()在您添加到列表框中的每个项目上被调用。覆盖它来解决这个问题。

相关问题