Winform的开发基本都是基于控件事件的,也就是事件驱动型的。

多选框的放置和值的获取有很多种,这里介绍几个简单常用的方法

1、直接放置Checkbox,并获取Checkbox的值

上图

做法也非常简单,就是在form中放置多个checkbox,然后循环遍历,检查其checked没有,然后将checkbox.text拼接到一起,赋值给label,当然实际开发中,我们会将选取的值放入数据库中。上代码

 private void button1_Click(object sender, EventArgs e)
{
string sb = "您的兴趣爱好是";
foreach (Control cl in this.Controls)//循环整个form上的控件
{
if (cl is CheckBox)//看看是不是checkbox
{
CheckBox ck = cl as CheckBox;//将找到的control转化成checkbox
if (ck.Checked)//判断是否选中
{
sb += ck.Text+",";
}
}
}
label2.Text = "" + sb.ToString(); }

2、将checkbox放入一个容器内,在容器内做循环判断,这个比较常用,上图先

跟上面的区别是所有的checkbox都放在groupBox1中了,当然只需要在groupBox1中查找、判断就可以了,上代码

 private void button1_Click(object sender, EventArgs e)
{
string sb = "您的兴趣爱好是";
foreach (Control cl in groupBox1.Controls)//,与上面的区别在这里哦——循环groupBox1上的控件
{
if (cl is CheckBox)//看看是不是checkbox
{
CheckBox ck = cl as CheckBox;//将找到的control转化成checkbox
if (ck.Checked)//判断是否选中
{
sb += ck.Text+",";
}
}
}
label2.Text = "" + sb.ToString(); }

3、最常规的做法当然是使用CheckedListbox了

CheckedListBox里面的项目设置可采用静态和动态加载两种方法,一般选项固定是会采用静态设置,选项不固定时,采用从文件或数据库读取,然后加载的方法

(1)先看看静态设置吧

上图唠

对就是这样的,编辑项或者在属性items集合里面设置即可,每行一个即可,然后遍历取值。

先上两张图,给大家区分一个属性CheckOnClick,左边的图是CheckOnClick为false的情况(勾选的时候先反蓝,单不勾中,在点一次才能勾中),右边的图是勾选一下就可以ok的,但是CheckOnClick得设置成true。

当然后台判断是否选中的方法也不一样,判断反蓝用.GetSelected(i),勾选用.GetItemChecked(i)

   

对于国人来说,还是一下选中好,所以最好将CheckOnClick设置为true,后台直接用.GetItemChecked(i)判断取值即可,上代码

 private void button1_Click(object sender, EventArgs e)
{
string sb = "您的兴趣爱好是";
for (int i = ; i < checkedListBox1.Items.Count; i++)
{
if (checkedListBox1.GetItemChecked(i))//先判断是否被选中
{
sb += checkedListBox1.CheckedItems[i].ToString();//将选中的值取出
}
}
label2.Text = sb; }

(2)动态加载CheckedListBox项

CheckedListBox动态加载就是从数控或者文件里面查找到数据,通过代码方式绑定,先上一个简单的例子

例子一,通过数组绑定

 //将数组项一一添加到checkedListBox上
String[] arr = new String[] { "足球","篮球","排球"};
for (int i = ; i < arr.Count(); i++)
{
checkedListBox1.Items.Add(arr[i]);
} string sb = "您的兴趣爱好是";
//取出选中的值
for (int i = ; i < checkedListBox1.Items.Count; i++)
{
if (checkedListBox1.GetItemChecked(i))//先判断是否被选中
{
sb += checkedListBox1.GetItemText(checkedListBox1.Items[i]);
}
}
label2.Text = sb;

例子二,借鉴园友们的一些做法

CheckedListBox应该是由ListBox扩展而来的,但在使用的时候,可能会发现——它不支持DataSource属性,不能像ListBox那样指定其数据源为一个DataTable。

事实上,CheckedListBox像ListBox一样有DataSource属性,DisplayMember和ValueMemeber属性也都是有的,只是IntelliSense不能将其智能感知出来。园中有朋友说VS2012是支持感知的,不妨可以试一下。

因此,我们可以通过代码将CheckedListBox绑定。

DataSet ds=bll.GetAllStudent();
checkedListBox1.DataSource = ds.Table[];
checkedListBox1.ValueMember = "student_id";
checkedListBox1.DisplayMember = "student_name";

获取checkedListBox1选中项的DisplayMember和ValueMember

for (int i = ; i < checkedListBox1.CheckedItems.Count; i++)
{
DataRowView dv = ((DataRowView)checkedListBox1.CheckedItems[i]);
string id = dv["student_id"].ToString();
string name = dv["student_name"].ToString();
}

4、全选和反选

先上两张图

 

代码贴上

//全选框的状态变化事件
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
if (checkBox1.Checked)
{
for (int i = ; i < checkedListBox1.Items.Count; i++)
{
checkedListBox1.SetItemChecked(i, true);
}
}
else
{
for (int i = ; i < checkedListBox1.Items.Count; i++)
{
checkedListBox1.SetItemChecked(i, false);
}
}
}

取值还是跟前面的方法一致。

Winform开发常用控件之Checkbox和CheckedListBox的更多相关文章

  1. Winform开发常用控件之TreeView菜单导航和权限用法

    TreeView一个很棒的控件,我们在做WEB开发时常常犯困的一个东东.当然这里介绍winform里面的用法唠. 先介绍几个属性吧,CheckBoxes设置为true的话树形节点前面会出现checkb ...

  2. Winform开发常用控件之DataGridView的简单数据绑定——自动绑定

    DataGridView控件可谓是Winform开发的重点控件,对于数据的呈现和操作非常方便,DataGridView可谓是既简单又复杂.简单在于其已经集成了很多方法,复杂在于可以使用其实现复杂的数据 ...

  3. Winform开发常用控件之ComboBox、ListBox

    ComboBox就是我们常见的下拉框,对于此类控件,我们最关心的当然是数据的绑定和选择值得获取. 首先介绍个属性DropDownStyle,如果不允许ComboBox输入值,只能选择,就选DropDo ...

  4. Winform开发常用控件之DataGridView的简单数据绑定——代码绑定DataSet、DataTable、IList、SqlDataReader

    前文介绍了Winform为DataGridView提供的数据自动绑定功能,下面介绍一下采用代码的数据绑定 1.用DataSet和DataTable为DataGridView提供数据源 先上代码 pri ...

  5. DevExpress winform XtraEditor常用控件

    最近在公司里面开始使用DevExpress winform的第三方控件进行开发和维护,这里整理一些常用控件的资料以便于后续查看 ComboBoxEdit 这个控件和winform自带的控件差不多,使用 ...

  6. WinForm 遍历用户控件里CheckBox

    1.常用调用方法 public partial class UCRights : UserControl { private readonly int LOCATIONY; private DataT ...

  7. WinForm开发-界面控件到实体,实体到界面控件自动绑定

    在WinForm开发中,我们是不是为绑定界面控件的数据而每个控件每个控件的赋值?在保存修改时是不是也是每个控件每个控件的赋值到实体中?字段一多,那简直就是噩梦.有没有像Web中那样方便的方法直接就自动 ...

  8. C# Winform开发以及控件开发的需要注意的,被人问怕了,都是基础常识

    我是搞控件开发的,经常被人问,所以把一些问题记录了下来!如果有人再问,直接把地址丢给他看. 一. 经常会有人抱怨Winform界面闪烁,下面有几个方法可以尽可能的避免出现闪烁 1.控件的使用尽量以纯色 ...

  9. c# WinForm开发 DataGridView控件的各种操作总结(单元格操作,属性设置)

    一.单元格内容的操作 *****// 取得当前单元格内容 Console.WriteLine(DataGridView1.CurrentCell.Value); // 取得当前单元格的列 Index ...

随机推荐

  1. C++学习28 重载>>和<<(输入输出运算符)

    在C++中,系统已经对左移运算符“<<”和右移运算符“>>”分别进行了重载,使其能够用于输入输出,但是输入输出的处理对象只能是系统内建的数据类型.系统重载这两个运算符是以系统类 ...

  2. 解决JSP 不解析EL表达式

    解决JSP 不解析EL表达式,jsp在使用EL表达式的时候发现它不被解析,而是直接以字符串的形式显示了出来,经过查阅资料和实践,终于得知了原因并找到了解决方案 原因是:在默认情况下,Servlet 2 ...

  3. 解决play framework play控制台乱码问题

    2.0以下版本 C:\Program Files\play-1.2.3\framework\pym\play 目录下的application.py  修改245行中的java_args.append( ...

  4. [Java] 匿名内部类

    package test.file; import java.io.File; import java.io.FilenameFilter; /** * 匿名的内部类 * @author Frost. ...

  5. git向gitHub上push和pull数据.

    1.在gitHub上首先建立仓储.这个过程就不在啰嗦了. 2.注意上图中右下角的https,ssh等东西. 3.向git上传的工具特别多.我这里用的cygwin. 至于cygwin自己到网上去下载.安 ...

  6. Ext TreeGrid提交修改过的数据

    本打算将整个treestore的数据提交到服务器,但找来找去没有找到好的方法,在翻api的时候发现了getUpdatedRecords()方法,拿来一试,试出此方法可以拿到被修改过的record so ...

  7. Linux命令 find和mv的结合使用:查找文件,移动到某个目录

    显示前十个文件 [root@localhost smgpbi]# ls -1 | sort -u | head -10 1.首先查看文件个数,进入所在的文件 # find . -name " ...

  8. HDU 5808[数位dp]

    /* 题意: 给你l和r,范围9e18,求l到r闭区间有多少个数字满足,连续的奇数的个数都为偶数,连续的偶数的个数都为奇数. 例如33433符合要求,44不符合要求.不能含有前导零. 思路: 队友说是 ...

  9. php mysql 中文乱码解决方法

    本文章向码农们介绍php mysql 中文乱码解决方法,对码农们非常实用,需要的码农可以参考一下. 从MySQL 4.1开始引入多语言的支持,但是用PHP插入的中文会出现乱码.无论用什么编码也不行 解 ...

  10. 使用appium模拟用户发送短信

    一段简单粗糙的代码.主要是实现的功能是模拟用户发送短信的功能. python版本3.5.2 appium版本1.4.16.1 from appium import webdriver desired_ ...