65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.50/5 (9投票s)

2008 年 1 月 17 日

CPOL
viewsIcon

100174

downloadIcon

2738

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

CustomCheckedListBox

引言

由于 .NET CheckedListBox 本身没有绑定功能,本文实现了一个 CheckedListBox 的扩展,使其可以绑定。此外,它实现了 DisplayMemberValueMember 属性,以便获取包含相应已选项目的 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 日:文章发布
© . All rights reserved.