0

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

orderCheckList.Items.Add(orderUp);

(这里,orderUp 是一个包含客户姓名等字段的订单)

任何人都可以帮忙吗?我知道有一个我忽略的简单解决方案。

4

2 回答 2

6

将 的 设置为DisplayMemberCheckedListBox显示的属性。例如:

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);
    }
}
于 2009-12-16T20:39:14.667 回答
4

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

于 2009-12-16T20:37:23.857 回答