Winform开发常用控件之Checkbox和CheckedListBox

Winform开发常用控件之Checkbox和CheckedListBoxWinform的开发基本都是基于控件事件的,也就是事件驱动型的。多选框的放置和值的获取有很多种,这里介绍几个简单常用的方法1、直接放置Checkbox,并获取Checkbox的值上图做法也非常简单,就

大家好,又见面了,我是你们的朋友全栈君。

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

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

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

上图<span role="heading" aria-level="2">Winform开发常用控件之Checkbox和CheckedListBox

做法也非常简单,就是在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放入一个容器内,在容器内做循环判断,这个比较常用,上图先

<span role="heading" aria-level="2">Winform开发常用控件之Checkbox和CheckedListBox

跟上面的区别是所有的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)先看看静态设置吧

上图唠

<span role="heading" aria-level="2">Winform开发常用控件之Checkbox和CheckedListBox

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

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

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

<span role="heading" aria-level="2">Winform开发常用控件之Checkbox和CheckedListBox   <span role="heading" aria-level="2">Winform开发常用控件之Checkbox和CheckedListBox

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

 private void button1_Click(object sender, EventArgs e)
        {
            string sb = "您的兴趣爱好是";
            for (int i = 0; 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 = 0; i < arr.Count(); i++)
            {
                checkedListBox1.Items.Add(arr[i]);
            }

string sb = "您的兴趣爱好是";
            //取出选中的值
            for (int i = 0; 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[0];
checkedListBox1.ValueMember = "student_id";
checkedListBox1.DisplayMember = "student_name";

获取checkedListBox1选中项的DisplayMember和ValueMember

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

4、全选和反选

 先上两张图

<span role="heading" aria-level="2">Winform开发常用控件之Checkbox和CheckedListBox  <span role="heading" aria-level="2">Winform开发常用控件之Checkbox和CheckedListBox

代码贴上

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/155215.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月2日 下午4:16
下一篇 2022年7月2日 下午4:16


相关推荐

  • 真封神2.5服务端关于不能转生问题解决办法

    真封神2.5服务端关于不能转生问题解决办法传说很久很久以前从ZFS4放出2.5的服务端以后很多人测试转生不了 因为被ZFS4个鸟人把转生的配置文件删除掉了  害的我曾经还使用反汇编改了一堆代码!伤心!现在我把这个配置文件补上给大家!已经会了的朋友不要藐视本人这里只给不会的人做下提示!更多教程请关注www.zfsyhg.com,感谢大家支持!感谢CSDN的支持!

    2022年7月24日
    12
  • eplan激活码破解步骤【2021.7最新】

    (eplan激活码破解步骤)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月22日
    1.6K
  • SpringBoot整合RabbitMQ五种常用模型

    SpringBoot整合RabbitMQ五种常用模型目录 1 SpringBoot 整合 RabbitMQ 使用 1 引入依赖 2 做配置 application yml3 helloworld4 work5 fanout6 routing7 Topic 订阅模式 动态路由模型 1 SpringBoot 整合 RabbitMQ 使用 1 引入依赖 引入与 rabbitmq 集成的依赖 dependency groupId groupId dependency

    2026年3月16日
    2
  • 阿里云ssl证书续费多少钱_怎么获取ssl证书

    阿里云ssl证书续费多少钱_怎么获取ssl证书    简单记录一下这几天处理阿里云ssl证书续费的过程遇到的问题,希望对有疑问的同学有所帮助。首先证书快到截止日期阿里云会短信通知进行提前续费。在快过期的证书旁边会有一个续费的按钮(数字证书管理服务/ssl证书/证书管理)点击续费需要进行相关设置,一般保持默认即可,点击确定就会生成订单,支付成功之后,大概五分钟左右在证书管理列表中会出现一条新的证书记录,状态为已签发;续费的证书相当于是新的证书,并不是在原来的证书基础上延长有效期。故证书管理中会显示所有的证书记

    2022年10月4日
    3
  • 软件测试之BUG的生命周期

    作为一名测试人员,重要的工作内容之一,就是找BUG,提交BUG,验证BUG,推进BUG的解决,直至软件达到发布的标准,提高软件的质量,及研发的工作效率和质量。要找BUG,那么,就要先了解一下BUG的定义是什么?BUG的定义:软件的BUG,狭义概念是指软件程序的漏洞或缺陷,广义概念除此之外还包括测试工程师或用户所发现和提出的软件可改进的细节、或与…

    2022年4月5日
    81
  • 详解如何将中缀表达式转化为后缀表达式

    详解如何将中缀表达式转化为后缀表达式本文我将从两种角度来解析如何将中缀表达式转化为后缀表达式一 从应对考试角度来 在最快的时间内得出最准确的答案 首先我们应该知道 要想将中缀转化为后缀 需要借助堆栈实现 不准备画图了 画图有点浪费时间 我会用最简单明了的语言使读者弄懂 举个例子吧 比如将 2 9 6 3 5 4 转化为后缀表达式 2963 5 nbsp 4 nbsp nbsp 1 任何中缀表达式都由运算数 运算符 括号 大

    2026年3月18日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号