为什么CheckedListBox DisplayMember没有显示



我正在尝试做一件非常简单的事情——将CheckedListBox绑定到对象列表。

类定义

namespace Models
{
public class Department
{
public int ID { get; set; }
public string Description { get; set; }
}
}

复制问题的最小完整代码样本

(首先创建CheckedListBox clb部门)

private void Form1_Load(object sender, EventArgs e)
{
List<Department> departmentList = new List<Department>();
departmentList.Add(new Department { ID = 1, Description = "HR" });
departmentList.Add(new Department { ID = 2, Description = "IT" });
departmentList.Add(new Department { ID = 3, Description = "Sales" });
var departmentBindingList = new BindingList<Department>(departmentList);
var departmentSource = new BindingSource(departmentBindingList, null);
clbDepartments.DisplayMember = "Description";
clbDepartments.ValueMember = "ID";
clbDepartments.DataSource = departmentSource;
}

列表绑定-我可以在CheckboxList中看到一个项目,在List<Department>中每个项目。

但是,列表不是显示"Description"字段的值,即DisplayMember,而是显示每个项目的"Models.Department"

预期输出

HR-

IT

销售


实际输出

型号。部门

型号。部门

型号。部门

我做错了什么?

您应该更改顺序
首先设置DataSource,然后设置DisplayMemberValueMember

这应该有效:

clbDepartments.DataSource = departmentSource;
clbDepartments.DisplayMember = "Description";
clbDepartments.ValueMember = "ID";

最新更新