Introduction
Due to the fact that .NET CheckedListBox
does not have out of the box binding facilities, this article implements an extension of the CheckedListBox
which can be bindable. Moreover, it implements the DisplayMember
and ValueMember
properties in order to get an array of IDs containing the respective checked items.
Approach
We have to implement four extra properties:
DataSource
DisplayMember
ValueMember
ValueList
You already know the use of the first three but the last one is a List<int>
. I chose int
because we need the ID and most of the times in the lookup table, this ID is a number. I chose a List because the user can check more than one item, hence we need a list.
Using the Code
To use this code, you have to create an object whose type is cCheckedListBox
and add it to your form:
cCheckedListBox cbGenreList = new cCheckedListBox();
cbGenreList.Location = new Point(8, 20);
cbGenreList.Size = new Size(130, 180);
this.grpGenres.Controls.Add(cbGenreList);
var GenreList = from c in databasebObjectContext.Genres orderby c.gnDescription select c;
cbGenreList.DataSource = GenreList.ToArray();
cbGenreList.DisplayMember = "gnDescription";
cbGenreList.ValueMember = "gnNumber";
To retrieve the values of the checked items :
List <int> selectedValues;
selectedValues= cbGenreList.ValueList;
To check some items by ID:
List<int> myValues = new List<int>();
myValues.Add(44);
myValues.Add(45);
myValues.Add(46);
cbGenreList.ValueList = myValues;
History
- 17th January, 2008: Article posted