Winform中CheckedListBox控件的使用
程序员文章站
2022-04-12 10:34:37
...
一、CheckedListBox控件多列显示
- 将控件的MultiColumn属性设为true;
- 根据需要item的宽度,可以设置ColumnWidth合适的值以显示item,避免有内容被挡住,如不设置,自动给一个默认的值。(暂时没有找到如何能够根据item内容其width动态变化)
二、设置全选/全不选/取消选中
//全选
for (int i = 0; i < this.checkedListBox1.Items.Count; i++) {
this.spatialCheckedListBox.SetItemChecked(i,true);
//将true改为false就是全不选
//this.spatialCheckedListBox.SetItemChecked(i, false);
}
//取消选中项
//方式一,测试中发现ClearSelected()不起作用
if(this.checkedListBox1.CheckedItems.Count > 0)
{
this.checkedListBox1.ClearSelected();
}
//方式二,获取选中元素的下标
if(this.checkedListBox1.CheckedItems.Count > 0)
{
foreach(int index in this.checkedListBox1.CheckedIndices)
{
box.SetItemChecked(index,false);
}
}
三、绑定数据源
在VS2012中CheckedListBox控件感知不到DataSource、DisplayMember、ValueMember三个属性,但其实这三个属性CheckedListBox控件是有的。
查看MSDN上关于CheckedListBox类文档
可以看到CheckedListBox有那三个属性,可以设置该三属性值以实现绑定数据源。
1、数据来源于直接读数据库,从数据库返回DataSet,可以使用下面直接绑定的形式(快捷方便)
//dataSet是数据库取回来的数据
checkedListBox1.DataSource = dataSet.tables[0];
checkedListBox1.DisplayMember = "name";
checkedListBox1.ValueMember = "id";
2、调用后台方法(别人写的),返回的不是DataSet形式,可能是xml,可能是json或者其他数据格式。
此种情况,目前想到可以使用两种形式来设置数据源DataSource的值:
假设数据在json数组strData中
(1)构造一个实体对象Person,将数据存在该Person的id和name属性中
Person p = new Person();
List<Person> data = new List<Person>();
for(int i = 0; i< strData.length; i++){
p.name= strData[i].name;
p.id = strData[i].id;
data.Add(p);
}
checkedListBox1.DataSource = data;
checkedListBox1.DisplayMember = "name";
checkedListBox1.ValueMember = "id";
(2)仿造DataSet返回DataTable的形式,自己新建一个DataTable用来存放数据
DataTable dt = new DataTable();
dt.Columns.Add("ID", Type.GetType("System.String"));//新建列名和列数据类型
dt.Columns.Add("Name",Type.GetType("System.String"));
for (int i = 0; i < strData.length; i++)
{
string id = strData[i].id;
string name = strData[i].name;
dt.Rows.Add(id,name);//增加行
}
checkedListBox1.DataSource = dt;
checkedListBox1.DisplayMember = "name";
checkedListBox1.ValueMember = "id";
四、获取所有被勾选item的value值
foreach(System.Data.DataRowView item in checkedListBox.CheckedItems)
{
MessageBox.Show(item.Row["ID"].ToString());//获取选中的value值
}
五、设置checkbox单击选中
checkedListBox.CheckOnClick = true;
上一篇: range()的10篇内容推荐
下一篇: jQuery如何实现图片滑动效果