winform 单选框_checkbox选中和不选中

winform 单选框_checkbox选中和不选中有时候在Win Form开发过程中,窗口显示的控件如单选、复选框等,需要根据数据库读取数据的结果动态生成指定数量的控件。因此涉及到动态生成指定数量的控件,并定义生成控件的事件等。本文主要以CheckBox为例对动态控件添加进行说明,为C#初学者提供参考与借鉴。首选给出本

有时候在Win Form开发过程中,窗口显示的控件如单选、复选框等,需要根据数据库读取数据的结果动态生成指定数量的控件。因此涉及到动态生成指定数量的控件,并定义生成控件的事件等。本文主要以CheckBox为例对动态控件添加进行说明,为C#初学者提供参考与借鉴。首选给出本案例需求窗口:

winform 单选框_checkbox选中和不选中

案例Form


本例所用Form窗口如上图所示,问题:要求在生成chart图表时,根据统计结果即柱状图的数量,动态生成右侧CheckBox,并实现初始状态全部CheckBox为选中状态,改变选中数量时左侧图标自动显示对应柱状图。

解决问题思路:

(1)获取查询记录集的数量(要生成多少个CheckBox实例对象)

int cnt=ds.Tables[0].Rows.Count;//ds存储查询结果,查询过程略,cnt即为记录集条数 

(2)对通过new 实例化的CheckBox如何存储?(本例需要生成三个checkbox)

C#中本身不提供长度未知的动态数组,因此不能直接使用数组对实例化后对象进行存储,本例设计使用ArrayList实现长度未知动态数组功能。

al = new ArrayList();//al是本例定义的变量,在load中进行初始化,初始化成功之后可存储checkbox; 

(3) 循环创建CheckBox实例

for(int m=0;m<cnt;m++) { ... CheckBox temp= new CheckBox();//temp为实例化CheckBox temp.AutoSize = true; temp.Location = new System.Drawing.Point(24, y);//绘图位置计算x坐标,Y坐标 temp.Name = "checkBox"+(m+1).ToString(); temp.Size = new System.Drawing.Size(59, 20);//checkbox绘制大小 temp.Text = ds.Tables[0].Rows[m].ItemArray[0].ToString(); ... temp.Checked = true;//初始化为选中状态 temp.Click += new System.EventHandler(Check_Click);//绑定事件处理函数 this.panel1.Controls.Add(temp); } 

在创建checkbox实例的同时,由于控件是动态创建的,因此需要手动定义消息处理,实现checkbox的事件。所有的checkbox都响应check_Click事件:

 temp.Click += new System.EventHandler(Check_Click);//绑定事件处理函数 

(4) check_Click事件编写

该事件主要遍历所有动态生成的checkbox获取其状态构造查询语句,实现对记录集ds数据进行筛选。由于所有checkbox都响应该事件,因此需要object sender参数接收被的控件,通过arraylist al表示全部的checkbox,并以此为基础进行操作。

private void Check_Click(object sender, EventArgs e) { CheckBox ck = (CheckBox)sender;//接收当前checkbox for(int m = 0; m < al.Count; m++) { CheckBox cbk = (CheckBox)al[m]; if (cbk.Checked) { //循环遍历checkbox,获取每一个checkbox状态,构造查询语句条件 } } } 

以上完成了动态checkbox的创建及消息响应设置,可以进一步实现根据checkbox选择显示Chart不同内容了。主要实现代码如下:

chart1.Update();// 使区域无效 chart1.DataSource = ds.Tables[0].Select(str);//对ds记录集进行筛选。str参数在checkbox响应函数中定义; 

至此本案例全部功能可以得到实现,最终实现效果如本文开头部分给出的运行效果截图。近期本头条号重点对C# Win Form编程基础知识进行说明。往期文章请链接阅读:

  1. Win Form登录框本地记住密码功能实现
  2. C# Win Form 编程实现图片的数据库存储
  3. C# Win Form 实现XML文件读写
  4. C# Win Form 读取CSV文件数据

本头条号长期关注于青少年编程资讯分享;编程课程、素材、代码分享及青少年编程培训。如果您对以上方面有兴趣,可关注该头条号,如有编程学习问题可以联系作者,共同探讨。

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/16981.html

(0)
上一篇 2024年 9月 17日
下一篇 2024年 9月 17日

相关推荐

关注微信