WinForm中ComboBox与ListBox绑定数据后不显示内容求助
解决WinForm ComboBox/ListBox数据绑定不显示内容的问题
问题根源及修复步骤:
类名大小写不匹配
你的数据源是List<PersonModel>,但实体类定义为Personmodel(首字母m小写),这会导致数据绑定无法识别正确类型,控件找不到对应的Name属性。将实体类名改为PersonModel(保持大小写一致):public class PersonModel { public string FirstName { get; set; } public string LastName { get; set; } public string Name { get { return $"{FirstName} {LastName}"; } } }List
不支持自动更新,调整绑定逻辑 - 方案一:调整代码执行顺序,先添加示例数据再绑定数据源
修改窗体构造函数,先调用CreateSampleData()再执行绑定:public CreateTeamForm() { InitializeComponent(); CreateSampleData(); ListsWireUp(); } - 方案二:改用
BindingList<T>替代List<T>,它支持数据变更通知,后续添加/删除数据时控件会自动更新:private BindingList<PersonModel> AvailableTeamMember = new BindingList<PersonModel>(); public CreateTeamForm() { InitializeComponent(); ListsWireUp(); CreateSampleData(); }
- 方案一:调整代码执行顺序,先添加示例数据再绑定数据源
验证DisplayMember属性正确性
确认DisplayMember设置的"Name"是实体类中存在的属性名,注意大小写敏感,你的Name属性定义正确,只要类名匹配即可生效。
完整修复后的代码示例:
窗体代码:
private BindingList<PersonModel> AvailableTeamMember = new BindingList<PersonModel>(); public CreateTeamForm() { InitializeComponent(); ListsWireUp(); CreateSampleData(); } private void CreateSampleData() { AvailableTeamMember.Add(new PersonModel { FirstName = "abc", LastName = "def" }); AvailableTeamMember.Add(new PersonModel { FirstName = "jack", LastName = "smith" }); } private void ListsWireUp() { SelectTeamMemberDropDown.DataSource = AvailableTeamMember; SelectTeamMemberDropDown.DisplayMember = "Name"; }
实体类代码:
public class PersonModel { public string FirstName { get; set; } public string LastName { get; set; } public string Name { get { return $"{FirstName} {LastName}"; } } }
内容的提问来源于stack exchange,提问作者user21952045
相关产品推荐
相关产品推荐

