C# WinForms中ListBox和ComboBox绑定List数据的方法

阿橙
阿橙
发布时间:2026-10-14 | 2人浏览过
原创

在C# Windows Forms应用程序开发中,经常需要将数据列表展示在下拉框或列表框中。通过设置 DataSource 和 DisplayMember 属性,可以高效地将自定义类的集合数据绑定到 ListBox 和 ComboBox 控件,并指定具体显示哪一个对象属性。

实现原理与目标

ListBox 用于显示多行可选列表,ComboBox 用于下拉选择。两者均支持数据绑定功能。当绑定一个对象列表(如 List<T>)时,默认情况下控件会调用对象的 ToString() 方法进行显示。为了显示特定的字段(如姓名),需要显式指定 DisplayMember 为该类中的属性名。

操作步骤

第1步:定义数据模型类

首先,创建一个用于绑定的自定义类。该类需要包含供界面显示的属性。例如,定义一个 Person 类,包含姓名 (Name)、年龄 (Age) 和身高 (Heigth) 属性:

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
    public int Heigth { get; set; }

    public Person(string name, int age, int heigth)
    {
        this.Name = name;
        this.Age = age;
        this.Heigth = heigth;
    }
}

第2步:准备数据集合

实例化一个 List<Person> 集合,并添加若干测试数据:

List<Person> persons = new List<Person>();
persons.Add(new Person("WuMiao", 18, 175));
persons.Add(new Person("YeXinYv", 20, 170));
persons.Add(new Person("WuDong", 18, 175));

第3步:绑定数据至ListBox控件

在窗体加载事件或初始化代码中,将集合赋值给 ListBox 的 DataSource 属性,并设置 DisplayMember 为希望显示的属性名 Name:

// 指定数据源
lb_PersonsList.DataSource = persons;
// 界面显示的是人的名字属性
lb_PersonsList.DisplayMember = "Name";

此时,ListBox 中将显示所有人员的姓名列表。

第4步:绑定数据至ComboBox控件

ComboBox 的绑定方式与 ListBox 完全一致:

// 指定数据源
cmb_PersonList.DataSource = persons;
// 界面显示的是人的名字属性
cmb_PersonList.DisplayMember = "Name";

运行后,ComboBox 的下拉列表中也将显示对应的人员姓名。若需获取选中项的完整对象,可通过访问 SelectedValue 或强制转换 SelectedItem 来实现。

完成判断与注意事项

  • 显示正确性:检查控件是否仅显示了 Name 属性的内容,而非整个对象的 ToString() 结果。
  • 属性匹配:DisplayMember 指定的字符串必须严格对应类中公开属性的大小写和名称,否则可能无数据显示或抛出异常。
  • 数据更新:如果动态修改了 persons 列表中的内容,直接刷新不会同步到控件。如需响应式更新,建议使用 BindingSource 组件或替换为 ObservableCollection<T> 并进行适当的数据源刷新操作。

以上就是C# WinForms中ListBox和ComboBox绑定List数据用法的详细内容,更多关于C#控件数据绑定的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表