将列表绑定到多个ComboBox
将列表绑定到多个ComboBox
我有一个带有许多组合框的Windows窗体。它们都必须显示相同的项目,并且我希望能够从它们的值列表中删除项目。因此,我决定尝试创建一个List变量,以便我可以轻松地从中删除和插入值。所以我做的是
ListRanks = new List (new string[] { "这里是值" });
然后在我的Form1Designer.cs中
this.ComboBox_Rank_0.DataSource = Ranks;
我知道ValueMember和DisplayMember是好东西,但目前没有使用它们也可以工作。编译后,窗体加载并且组合框具有正确的值。
问题是,当我在一个组合框中选择一个值时,其他组合框也会选择相同的值。有什么想法吗?
问题:为什么使用new BindingList<string>(names)
而不是new List<string>(names)
?为什么不需要在构造函数中使用new string[]语法?
原因:
- BindingList<T>
类可以单独处理每个组合框与列表的交互,而List<T>
类不能。
- BindingList<T>
类需要引用System.ComponentModel
命名空间。
- 在BindingList<T>
类的构造函数中不需要使用new string[]语法,而List<T>
类需要。
解决方法:
- 使用BindingList<T>
类来绑定列表到多个组合框。
- 引用System.ComponentModel
命名空间。
- 在BindingList<T>
类的构造函数中使用列表名作为参数,而不是new string[]语法。
关于new string[]语法和BindingList<T>
类与List<T>
类的区别,可以参考以下链接: