博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在C# WinForm程序中创建控件数组及相应的事件处理
阅读量:7039 次
发布时间:2019-06-28

本文共 1166 字,大约阅读时间需要 3 分钟。

控件数组是VB提供的一个优秀的设计解决方案,它能很方便快捷的处理大批同类控件的响应和时间处理,但不知为什么在C#中这个优秀特性没有传承下来,甚为可惜,本文将要探讨就是如何在C# WinForm程序实现它.

首先请看界面
在上面的界面中,本人想实现一个42个元素的Button数组来实现一个日历的功能,上面显示出了一部分. 其中采用了网格布局来放置这些按钮.
手工创建为全部按钮后,在窗体类中代码中定义成员变量控件数组: private Button[] btns;
然后在构造函数中初始化: btns = new Button[42];

btns[0] = this.button1; btns[1] = this.button2; ...... btns[40] = this.button41; btns[41] = this.button42;

大家不禁要问了,如果采用动态创建岂不更好.其实不然,我采用手工创建的主要原因是手工放置调整按钮的位置和大小较为方便,如果动态创建出来的话,把他们放到界面上比较麻烦,尤其是在比较复杂的布局中.
然后是为上述数组中的各个控件添加事件: for (int i = 0; i < btns.Length;i++ )  {         btns[i].Click += new System.EventHandler(this.btns_Click); } 如果是要根据下标添加不同事件也可以的,做一些分支即可. C#的这种做法类似JavaSwing中AddActionListener做法,发挥以下我们也可用C#实现MVC.
最后定义btns_Click事件处理函数就行了: // 按钮数组的事件处理 private void btns_Click(object sender, System.EventArgs e){     String[] arrs = ((Button)sender).Text.Split('\n');

    String day = arrs[0];

    if (day.Length < 2)     {   day = "0" + day;     }

    String date = currMonthLbl.Text + "-" + day;

    mainForm.RefreshDatePanel(date); }

从上面可以看出,将sender用Button强制转化一下就能得到事件对应的控件,然后根据它的Text属性可以进行唯一性判断,其后再进行单独处理即可.
总结起来,在C#中创建控件数组很简单,首先在类中创建一个控件类型的数组,然后初始化它,具体初始化是动态创建还是链接到已有控件可以根据情况自行选择,然后为数组元素添加事件,最后实现事件即可,在事件实现中即可以通过转化sender来得到相应控件.

转载地址:http://ltnal.baihongyu.com/

你可能感兴趣的文章
css布局float浮动布局详解,工作半年后才知道的知识
查看>>
ECS开放批量创建实例接口RunInstances
查看>>
PyODPS 安装常见问题解决
查看>>
单网卡实现虚拟交换机trunk功能
查看>>
nginx日志定时切割
查看>>
VS2012使用技巧
查看>>
学习笔记-小甲鱼Python3学习第六讲:python之常用操作符
查看>>
高性能服务器——I/O多路转接的三种模式(select &poll& epoll)
查看>>
centos6.5编译redis3.0.3
查看>>
Docker 之 LNMPA(Nginx + PHP + Apache + MySQL) 环境
查看>>
安装httpd2.4
查看>>
JPA(五)之实体关系多对多
查看>>
Zookeeper学习笔记-zookeeper介绍
查看>>
mysql学习笔记(4-通用二进制格式安装MariaDB)
查看>>
Android APK 瘦身实践
查看>>
仿车轮社区图片切换效果
查看>>
执行计划的操作类型
查看>>
VTP配置实例
查看>>
heartbeat+nfs+apache(web)
查看>>
centos7改系统默认语言
查看>>