hello guys,今天的小白继续在努力码字分享。
我们会碰到这么一个场景,例如说需要一个控件来批量显示单据号,并且可以进行选择并获取选中的单据号进行下一步操作,Winform中可以实现这个功能的控件有ListBox,ListView,CheckListBox,DataGridView等。
今天我要分享的是CheckListBox的一些用法。
1、单击即可勾选Checkbox
CheckListBox默认是鼠标单击Item时,只是选中了Item,需要再点击一下Item,才可以勾选Checkbox。个人观点,在大部分使用场景中,这种使用体验并不好,所以在初始化这个控件的时候,我们可以设置CheckOnClick属性为true;
this.checkedListBox1.CheckOnClick = true;
实际操作步骤:
![c#datagridview获取选中行数据-「Winform开发小技巧05」批量操作单号-CheckListBox](https://cdn.aixure.com/wp-content/uploads/20231119/0632b0164d7a8ac8f7aa1ae135588c14_0.gif)
2、点击全选
如果列表的Item很多,这个时候要全选的话,一个个去点击是非常费劲的,我们可以增加一个全选按钮。
全选Item时,注意CheckListBox中的CheckBox是没有Checked属性的,我们需要用到GetItemChecked和SetItemChecked两个方法来实现这个功能。
具体代码如下:
//全选功能
for (int i = 0; i < this.checkedListBox1.Items.Count; i++)
{
if (this.checkedListBox1.GetItemChecked(i) == false)
this.checkedListBox1.SetItemChecked(i,true);
}
实际操作步骤:(我这里是用代码先增加一个Button,再写这个Button的Click事件,实际操作中可以直接拖拽一个控件,比较方便,后期维护也方便)
![c#datagridview获取选中行数据-「Winform开发小技巧05」批量操作单号-CheckListBox](https://cdn.aixure.com/wp-content/uploads/20231119/0632b0164d7a8ac8f7aa1ae135588c14_1.gif)
3、点击反选
反选功能跟全选功能有相似之处,反选功能使用场景:需要在众多Item中剔除几个不要的,可以先选中这几个Item,然后反选中其他Item。
具体代码如下:
//反选功能
for (int i = 0; i < this.checkedListBox1.Items.Count; i++)
{
if (this.checkedListBox1.GetItemChecked(i) == true)
this.checkedListBox1.SetItemChecked(i, false);
else
this.checkedListBox1.SetItemChecked(i,true);
}
实际操作步骤:
4、定位Item
如果列表中的Item非常多c#datagridview获取选中行数据,还会遇到一个情况,我想列表直接跳转到我想要选择的相应Item的那一页,而不是我一行行慢慢去找,这也是非常影响用户体验的一个小功能。
实际的代码也很简单c#datagridview获取选中行数据,我增加了一个TextBox来输入想要查询的Item,和一个Button来触发定位功能。
int index= this.checkedListBox1.FindString(this.textBox1.Text);
this.checkedListBox1.SelectedIndex = index;
实际的效果可以看动图:
![c#datagridview获取选中行数据-「Winform开发小技巧05」批量操作单号-CheckListBox](https://cdn.aixure.com/wp-content/uploads/20231119/0632b0164d7a8ac8f7aa1ae135588c14_2.gif)
这里也有个需要注意的点,官方文档中,对FindString的定义是:查找 ListBox 中以指定字符串开始的第一个项。所以,FindString返回的index是列表中出现的第一个指定Item的索引,如果列表中有多个相同的Item,这个时候定位功能可能就不是很适合用了。
所以,如果想要列表中的Item是唯一的,在初始化数据的时候,就要增加一个是否重复的判断。
以上方式都是小编的一点拙见,如果各位有什么更好的方法,欢迎评论区指正。小编感激不尽~
如果各位觉得我写的对你有那么一点点帮助,可以随手点一下关注,之后我会继续努力的。[加油]
限时特惠:本站每日持续更新海量各大内部网赚创业教程,会员可以下载全站资源点击查看详情
站长微信: