具有数据源实现的自定义 CheckedListBox(可绑定)






4.50/5 (9投票s)
在本文中,您将看到如何将 CheckedListBox 绑定到数据源,以及如何获取/设置已选项目的 ID 列表。

引言
由于 .NET CheckedListBox
本身没有绑定功能,本文实现了一个 CheckedListBox
的扩展,使其可以绑定。此外,它实现了 DisplayMember
和 ValueMember
属性,以便获取包含相应已选项目的 ID 数组。
方法
我们需要实现四个额外的属性
DataSource
DisplayMember
ValueMember
ValueList
您已经知道前三个属性的用途,但最后一个属性是一个 List<int>
。我选择 int
是因为我们需要 ID,而且在查找表中,这个 ID 通常是一个数字。我选择 List 是因为用户可以选中多个项目,因此我们需要一个列表。
Using the Code
要使用此代码,您需要创建一个类型为 cCheckedListBox
的对象,并将其添加到您的窗体中
cCheckedListBox cbGenreList = new cCheckedListBox();
cbGenreList.Location = new Point(8, 20);
cbGenreList.Size = new Size(130, 180);
this.grpGenres.Controls.Add(cbGenreList);
// Let's bind it to data from a Database
var GenreList = from c in databasebObjectContext.Genres orderby c.gnDescription select c;
cbGenreList.DataSource = GenreList.ToArray();
cbGenreList.DisplayMember = "gnDescription";
cbGenreList.ValueMember = "gnNumber";
要检索已选项目的数值
List <int> selectedValues;
selectedValues= cbGenreList.ValueList;
要通过 ID 选中某些项目
List<int> myValues = new List<int>();
myValues.Add(44);
myValues.Add(45);
myValues.Add(46);
cbGenreList.ValueList = myValues;
历史
- 2008 年 1 月 17 日:文章发布