我在 C# 的选中列表框中显示对象时遇到问题。我可以很好地添加对象,但是当对象显示给用户时,程序会将复选框选择输出为 Salesform.order,而不是像我想要的那样在 order 类中调用 tostring 方法。这会导致多个订单显示为同一事物:“Salesform.order”。
orderCheckList.Items.Add(orderUp);
(这里,orderUp 是一个包含客户姓名等字段的订单)
任何人都可以帮忙吗?我知道有一个我忽略的简单解决方案。
我在 C# 的选中列表框中显示对象时遇到问题。我可以很好地添加对象,但是当对象显示给用户时,程序会将复选框选择输出为 Salesform.order,而不是像我想要的那样在 order 类中调用 tostring 方法。这会导致多个订单显示为同一事物:“Salesform.order”。
orderCheckList.Items.Add(orderUp);
(这里,orderUp 是一个包含客户姓名等字段的订单)
任何人都可以帮忙吗?我知道有一个我忽略的简单解决方案。
将 的 设置为DisplayMember
要CheckedListBox
显示的属性。例如:
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);
}
}
.ToString()
在您添加到列表框中的每个项目上都会被调用。覆盖它以解决此问题。