在编写C#窗体应用程序的时候,有时候需要生成好多个功能相似的同一种控件(比如数字键盘按键、单选框等),这时候使用窗体编辑器,费时费力,不便于修改。因此可以采用批量生成控件的形式。

以批量生成按钮为例

Button[] bnt = new Button[16];

使用代码批量生成。

需要注意坐标是相对于父容器而言的,如果要在groupbox中生成,需要指定父容器(推荐)

for(int i = 0; i < 16; i++)
{
//实例化
bnt[i] = new Button();
//定义控件名称
bnt[i].Name = "bntton_"+i.ToString();
//定义text属性,可以用string数组初始化为指定值
bnt[i].Text = i.ToString();
//注:如果不指定父容器,则坐标是相对于主窗体的
bnt[i].Parent = groupBox1;
//定义坐标
bnt[i].Location = new Point(20+(i%4)*50,20+(i/4)*50);
//调整大小
//bnt[i].AutoSize = true;
bnt[i].Size = new Size(50,50);
//批量添加事件
bnt[i].Click+= new EventHandler( bntton_Click);
}

为他们统一编写点击事件,sender即为触发该事件的控件对象,使用类型转换为Button。

此时如果我点击了Button_7

则((Button)sender)等同于Button_7

//Sender为触发对象
private void bntton_Click(object sender, EventArgs e)
{
MessageBox.Show("点击了 "+((Button)sender).Name.ToString());
}

C#控件数组批量生成控件的更多相关文章

  1. Silverlight动态生成控件实例

    刚学习Silverlight,做了一个动态创建控件的实例 实现结果:根据已有的控件类名称,得到控件的实例化对象 实现思路1:就是定义一个模板文件,将类名做为参数,在silverlight中使用Srea ...

  2. Asp.net web form 动态生成控件的注意事项

    Asp.net页面生命周期 页面初始化          Page_Init   加载View State      LoadViewState    回发数据处理      LoadPostData ...

  3. c#依参数自动生成控件

    很多系统都带有自定义报表的功能,而此功能都需依参数自动生成控件,举例如下: 如上图,一条查询语句当中,包含了3个参数,其中两个是日期型(使用:DATE!进行标识),一个是字符型(使用:进行标识),要生 ...

  4. Asp.net中使用文本框的值动态生成控件的方法

    这篇文章主要介绍了Asp.net中使用文本框的值动态生成控件的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下 看到一个网友,有论坛上问及,动态的生成checkbox控件,在文本框中输入一个“花 ...

  5. WPF: WrapPanel 容器的数据绑定(动态生成控件、遍历)

    原文:WPF: WrapPanel 容器的数据绑定(动态生成控件.遍历) 问题:        有一些CheckBox需要作为选项添加到页面上,但是数目不定.而为了方便排版,我选择用WrapPanel ...

  6. Winforn中使用代码动态生成控件

    场景 有时候需要根据配置文件在窗体中使用代码动态生成控件. 比如读取xml配置文件中的节点数量,然后在窗体中生成指定数量的RadioGroup控件. 实现 新建一个窗体,在窗体的加载完之后的事件中 p ...

  7. 嵌套在母版页中的repeater自动生成控件ID

    注:如果直接在后台通过e.Item.FindControl()方法直接找控件,然后再通过对其ID赋值,在编译之后会出现“母版页名称_ID“类似的很长的ID值(详情点击) 解决方法:<asp:Co ...

  8. (四)动态生成控件,点击button添加控件

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. (五)ASP.NET中动态生成控件

    今天被问到如何在ASP.NET 页面中动态创建一批控件,并且希望在后续代码中能访问到这些动态创建的控件.我用下面的例子来解释这个问题 ================================= ...

随机推荐

  1. springboot + mybatis +pageHelper分页排序

    今天下午写查出来的数据的排序,原来的数据没有排序,现在把排序功能加上...原来用的,是xml中的sql动态传参 ,,1个小数没有弄出来,果断放弃... 网上百度一下,发现用pageHelper  可以 ...

  2. day 1总结-python基础

    第一天的复习 目录:1.编程语言的区分 2.python的优缺点 3.python环境的搭建,版本之间的大致区别 4.代码的注释规则 5.变量 6.常量 7.基本程序交互 8.基础数据类型 9.基础循 ...

  3. Linux:Day13(上) CentOS系统启动流程

    CentOS 5和6的启动流程 Linux:kernel+rootfs kernel:进程管理.内存管理.网络管理.驱动程序.文件系统.安全功能 rootfs: glibc 库:函数集合,functi ...

  4. Golang 入门系列(一)Go环境搭建

    安装 Go Go语言的优劣,这里就不介绍了,下面直接讲Go 的安装: Go 的官方网站:http://golang.org/(需要FQ软件) 国内下载地址:http://www.golangtc.co ...

  5. JavaScript日历控件开发

    概述 在开篇之前,先附上日历的代码地址和演示地址,代码是本文要分析的代码,演示效果是本文要实现的效果 代码地址:https://github.com/aspwebchh/javascript-cont ...

  6. Python 属性描述符和属性的查找过程

    属性描述符可以用来控制给属性赋值的时候的一些行为 import numbers class IntField: def __get__(self, instance, owner): return s ...

  7. web 日历 任务 插件

    [2] 日历任务插件(jquery版)新增日历任务和点击监听 - qq_26462567的博客 - CSDN博客https://blog.csdn.net/qq_26462567/article/de ...

  8. vue脚手架搭建项目引用百度地图--出坑

    这是官网地址 https://dafrok.github.io/vue-baidu-map/#/zh/start/installation 需要声明注意的是 BaiduMap 组件容器本身是一个空的块 ...

  9. php中header函数参数的Cache-control的使用方法

    网页的缓存是由HTTP消息头中的“Cache-control”来控制的,常见的取值有private.no-cache.max-age.must-revalidate等,默认为private.其作用根据 ...

  10. 【转】How to create a new user and grant permissions in MySQL

    MySQL is one of the most popular database management systems. In this tutorial we will cover the ste ...