将列表绑定到多个组合框

本文关键字:组合 列表 绑定 | 更新日期: 2024-05-25 13:27:38

我有一个带有许多组合框的windows窗体。它们都必须显示相同的项目,我希望能够从它们的值列表中删除项目。所以我决定尝试制作一个List变量,这样我就可以很容易地删除和插入值

List<string> Ranks = new List<string>(new string[] { "values here" });

然后在我的Form1Designer.cs 中

this.ComboBox_Rank_0.DataSource = Ranks;

我认为ValueMember和DisplayMember是不错的东西,但到目前为止,没有它们也能正常工作。编译时,表单加载并且组合框具有正确的值。

问题是,当我在一个组合框中选择一个值时,其他组合框也会选择相同的值。有什么想法吗?

将列表绑定到多个组合框

使用BindingList<T>
这个类允许您为每个组合单独处理与列表的交互

例如

List<string> names = new List<string>()
        {"Steve", "Mark", "Luke", "John", "Robert"};
BindingList<string> bl1 = new BindingList<string>(names);
ComboBox_Rank_0.DataSource = bl1;
BindingList<string> bl2 = new BindingList<string>(names);
ComboBox_Rank_1.DataSource = bl2;

BindingList<T>需要using System.ComponentModel;,请注意,在列表的构造函数中不需要新字符串[]语法