今天一群里有人问到这个功能,其实应该挺简单,但提问题的人问题的出发点并没有描述清楚。因此,一个简简单单的需求,就引起了群内热烈的讨论。下面看看这个功能如何去实现,先上效果:

下面直接上代码,请不要在意控件的名称以及Text属性:

   public Form6()
{
InitializeComponent();
foreach (CheckBox ck in groupBox1.Controls)
{
ck.CheckedChanged += Ck_CheckedChanged;
}
}
private void checkBox1_Click(object sender, EventArgs e)
{
if (checkBox1.CheckState == CheckState.Checked)
{
foreach (CheckBox ck in groupBox1.Controls)
ck.Checked = true;
checkBox1.Text = "反选";
}
else
{
foreach (CheckBox ck in groupBox1.Controls)
ck.Checked = false;
checkBox1.Text = "全选";
}
} private void Ck_CheckedChanged(object sender, EventArgs e)
{
CheckBox c = sender as CheckBox;
if (c.Checked == true)
{
foreach (CheckBox ch in groupBox1.Controls)
{
if (ch.Checked == false)
return;
}
checkBox1.Checked = true;
checkBox1.Text = "反选";
}
else
{
checkBox1.Checked = false;
checkBox1.Text = "全选";
}
}

接下来要说的是,关于全选CheckBox事件的选取。最初,该同学提的问题是:有没有遇到过按钮点击没反应?但随着群里大家一人一嘴的提示,该同学渐渐把自己的需求给提出来了,他的代码是用“全选”CheckBox的CheckChanged事件中去修改“子选项”里面的6个CheckBox选中状态。然而,他又想到:如果不是点“全选”CheckBox,而是下面6个CheckBox挨个点,上面那个全选的状态怎么改。于是该同学又给下面六个CheckBox分别注册了CheckChanged事件,去判断并修改全选CheckBox的状态。最终,导致了他所谓的事件嵌套,跳不出来了。

其实放弃使用全选的CheckChanged事件,选用Click事件就可以解决掉全选的两个Check属性更改的来源:1是来自自己的点击更改状态,2.是来自子选项中所有checkbox都选中,间接导致的全选。没有总结,仅作记录。

C# WinForm中实现CheckBox全选反选功能的更多相关文章

  1. 关于Winform下DataGridView中实现checkbox全选反选、同步列表项的处理

    近期接手一个winform 项目,虽然之前有.net 的经验,但是对一些控件的用法还不是很熟悉. 这段时间将会记录一些在工作中遇到的坎坷以及对应的解决办法,写出来与大家分享并希望大神提出更好解决方法来 ...

  2. bootstrap 中的 iCheck 全选反选功能的实现

    喜欢bootstrap 风格的同学应该知道,iCheck的样式还是很好看的. 官网: http://www.bootcss.com/p/icheck/ 进入正题,iCheck提供了一些方法,可以进行全 ...

  3. 表单javascript checkbox全选 反选 全不选

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...

  4. JavaScript 实现全选 / 反选功能

    JavaScript 实现全选 / 反选功能 版权声明:未经授权,内容严禁转载! 构建主体界面 编写 HTML 代码 和 CSS 代码,设计主题界面 <style> #user { wid ...

  5. jquery 书写全选反选功能

    书写一个后台管理中用到的全选反选功能.代码如下 <!DOCTYPE html> <html lang="en"> <head> <meta ...

  6. vue中的checkbox全选和反选

    前几天有个博客园的朋友问小颖,小颖之前写的vue2.0在table中实现全选和反选  .Vue.js实现checkbox的全选和反选,为什么他将里面的js复制下来,但是实现不了全选和反选.小颖当时看他 ...

  7. jquery、js操作checkbox全选反选

    全选反选checkbox在实际应用中比较常见,本文有个不错的示例,大家可以参考下 操作checkbox,全选反选//全选 function checkAll() { $('input[name=&qu ...

  8. JS全选反选功能

    总选框:<input type="checkbox" class="all" name="all"> 子选框: <inpu ...

  9. jquery实现全选/反选功能

    <!DOCTYPE html><html><head> <meta http-equiv="Content-Type" content=& ...

随机推荐

  1. ViewPager.getChildCount() 含义

    viewpager.getChildCount() 非常easy误解成viewpager子页面的size.它和getCount还是有差别的 getChildCount() 是表示当前可见页size 比 ...

  2. registerWithTouchDispatcher()函数的使用

    registerWithTouchDispatcher()函数的使用 registerWithTouchDispatcher()函数主要用于注册Touch事件. 当我们使用this->setTo ...

  3. HttpDNS 服务详解(转)

    但凡使用域名来给用户提供服务的互联网企业,都或多或少地无法避免在有中国特色的互联网环境中遭遇到各种域名被缓存.用户跨网访问缓慢等问题.那么对于腾讯这样的域名数量在10万级别的互联网公司来讲,域名解析异 ...

  4. jquery实现仿select列表的即时搜索及拼音搜索

    这里提到select,其实不是select,而是用<li><input>标签去仿造一个select,以实现对已有“option”的快速检索功能. 以<input>标 ...

  5. UltraEdit-32 温馨提示:右协会,取消 bak文件

    1.最近安装UltraEdit-32 无权协会,能够 高级 ->组态 ->文件关联 在 检查 继承到资源管理器 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkb ...

  6. PLSQL Developer 9.如何设置查询返回所有纪录(转)

    默认PLSQL Developer查询出来的记录只能是满屏那么多行,一般也就是二三十行,比较不方便. 根据以下设置,可以将其结果都返回. 方法:Tools>Preferences>Wind ...

  7. linux下安装oracle11g 64位最简客户端(转)

    安装环境 Linux服务器:SuSe11 sp1 64位           Oracle客户端:Oracle11gR2 64位(最简客户端) 部署流程 1.准备工作,首先在oracle官网下载最新的 ...

  8. 【原创】一个基于简单剪枝的DFS解数独程序

    问题来源:leetCode Sudoku Solver Write a program to solve aSudoku puzzle by filling the empty cells. Empt ...

  9. JSP-简单的练习省略显示长字符串

    <%@ page contentType="text/html; charset=gb2312" %> <!-- JSP指令标签 --> <%@ pa ...

  10. 利用HttpOnly来防御xss攻击

    xss的概念就不用多说了,它的危害是极大的,这就意味着一旦你的站点出现xss漏洞,就能够运行随意的js代码,最可怕的是攻击者利用js获取cookie或者session劫持,假设这里面包括了大量敏感信息 ...