我在C#中的checkedlistbox显示了它要显示的对象的类型,但不显示它的名称

Waf*_*les 0 c# checkedlistbox winforms

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

orderCheckList.Items.Add(orderUp);
Run Code Online (Sandbox Code Playgroud)

(这里,orderUp是一个带有客户名称等字段的订单)

有人可以帮忙吗?我知道有一个简单的解决方案,我忽略了.

Jon*_*eet 6

设置DisplayMember的CheckedListBox您要显示的属性.例如:

orderCheckList.DisplayMember = "Title";
// Now orderUp.Title will be displayed
Run Code Online (Sandbox Code Playgroud)

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