activex控件 新对象 ocx 初始化_C# Win Form 动态添加CheckBox控件

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

9419d08679e61a2c4597ad016724a994.png

案例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

在创建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编程基础知识进行说明。往期文章请点击链接阅读:

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值