Winform中CheckedListBox控件的使用

本文介绍了Winform中CheckedListBox控件的使用,包括如何设置多列显示,实现全选/全不选功能,绑定数据源,以及获取选中项的值。在数据绑定部分,讨论了直接绑定数据库数据和处理非DataSet形式数据的方法,并提供了获取勾选项value值的方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、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";

参考:C#创建DataTable

四、获取所有被勾选item的value值

foreach(System.Data.DataRowView item in checkedListBox.CheckedItems)
{
     MessageBox.Show(item.Row["ID"].ToString());//获取选中的value值
}

五、设置checkbox单击选中

checkedListBox.CheckOnClick = true;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值