我正在尝试做一件非常简单的事情——将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
,然后设置DisplayMember
和ValueMember
这应该有效:
clbDepartments.DataSource = departmentSource;
clbDepartments.DisplayMember = "Description";
clbDepartments.ValueMember = "ID";