FlowLayoutPanel flowLayoutPanel1 = new FlowLayoutPanel();
for (int i = 0; i
< 9; i++)
{
    Button btn = new Button();
    btn.Height =
100;
    btn.Width = 100;
    btn.Cursor = Cursors.Hand;  
    btn.Name
= btn.Text = "button" + (i + 1);

flowLayoutPanel1.Dock =
DockStyle.Left;
    flowLayoutPanel1.Width = 330;
   
flowLayoutPanel1.Controls.Add(btn);
}
this.Controls.Add(flowLayoutPanel1);

FlowLayoutPanel flowLayoutPanel1 = new FlowLayoutPanel();//为什么要添加这样一个控件?
FlowLayoutPanel是一个用于自动排列控件的panel,它会自动的排列在它里面的控件,默认是从左到右,从上到下,用这个控件,就是为了方便不用自己写代码控制button的位置

flowLayoutPanel1.Dock
=
DockStyle.Left;//这个又是什么意思啊?
这句是让FlowLayoutPanel控件停靠在主窗体上,停靠的方式并不是占满整个主窗体,而是靠左,也就是左边固定在窗体的最左边,右边的大小自己控制,为什么不全屏停靠是因为,这个控件无法让在它里面的控件自动换行,如果窗体很大,那一排就会自动放上多于3个button,所以需要手动设置FlowLayoutPanel的宽度,让它一排只能装下3个button,第4个就自动换到下一行了

this.Controls.Add(flowLayoutPanel1);//为什么要使用这个添加?
这句是将FlowLayoutPanel控件放到窗体中,动态创建的FlowLayoutPanel控件一开始并没有放到窗体中
就像动态创建的button,一开始并没有放到FlowLayoutPanel控件中一样,需要flowLayoutPanel1.Controls.Add(btn)把button放到FlowLayoutPanel中一样

事件的方法很简单,但事件有很多种,每一种的代码稍有点区别,你可以使用一个简便的方法,就是你先用静态的方式,就是弄一个button在设计器上,在事件窗口中双击创建一个事件,然后去Designer中找到自动添加的这行代码,然后复制到程序中,然后把界面还原回来。
如button的点击事件
this.button1.Click
+= new System.EventHandler(this.button1_Click);
//
控件名(也就是控件的Name,不是Text).Click += new
System.EventHandler(响应事件的方法名)
然后就是创建响应方法,方法名要与注册事件时写的方法名一样
private void
button1_Click(object sender, EventArgs
e)
{
}
取消事件,跟注册事件一样,只是把+=换成-=
this.button1.Click -= new
System.EventHandler(this.button1_Click);
程序执行过这一行代码后,就不会再响应点击事件了

像上面的动态的添加9个button的例子,你需要在for里面添加代码,不过要写在btn.Name
= btn.Text = "button" + (i + 1);后面,因为要先赋了控件名以后,再添加事件
btn.Name.Click += new
System.EventHandler(this.button1_Click);
这样9个button的点击都会进入到private void
button1_Click(object sender, EventArgs e)这个方法

Winfrom动态创建控件的更多相关文章

  1. 小子给大家分享一个或者多个新手创建tableview经常会遇到的坑(动态创建控件,xib的重用)

    小子最近做了一个根据接口返回的数据在Cell中动态创建控件,感觉应该会一部分人卡在这里,小子就跟大家分享一下: 1.控件重复创建:这个问题出现的原因是动态创建的cell内容的时候,无法进行重用设置,所 ...

  2. VisionPro笔记(1):动态创建控件

     VisionPro学习笔记(1):动态创建控件 有的时候可能需要在程序中动态创建控件,VisionPro实例中提供了一例动态创建Blob控件的方法.当然,动态创建过多的控件会极大的消耗系统的资源,建 ...

  3. 【转载】MFC动态创建控件及其消息响应函数

    原文:http://blog.sina.com.cn/s/blog_4a08244901014ok1.html 这几天专门调研了一下MFC中如何动态创建控件及其消息响应函数. 参考帖子如下: (1)h ...

  4. MFC动态创建控件及其消息响应函数

    这几天专门调研了一下MFC中如何动态创建控件及其消息响应函数. 参考帖子如下: (1)http://topic.csdn.net/u/20101204/13/5f1b1e70-2f1c-4205-ba ...

  5. delphi动态创建控件

    动态创建控件 其实动态创建控件很简单,相信看过本文后你会全明白的. 1 先在单元的initialization 部分注册它,(这样在单元使用时会自动注册的)如: RegisterClass( TBut ...

  6. MFC 动态创建控件

    动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的.   一.创建动态控件:   为了对照,我们先来看一下静态控件的创建.   放置静态控件时必须先建立一个容器,一 ...

  7. 在DELPHI中动态创建控件以及控件的事件

    在DELPHI中我们经常要动态的创建控件以及控件的事件.例如,我们可能想根据程序需要动态的创建一些Tshape组件来创建某个图形,并使得在鼠标移动上去之后可以完成某些操作.这一般需要需要三步: 生成一 ...

  8. 动态创建控件 #Create(...)

    在类中创建一个控件对象;例:CButton m_btn; 用Create创建一个对象(#其实已经与其绑定)m_btn.Create(.....); #注意Create()函数的参数 问题一:点击一个b ...

  9. andriod 动态创建控件

    Button btNext=(Button)findViewById(R.id.next); btNext.setOnClickListener(new Button.OnClickListener( ...

随机推荐

  1. 最新GHOST XP系统安全稳定版 V2016年

    来自系统妈:http://www.xitongma.com 电脑公司GHOST xp系统经典优化版 V2016年4月 系统概述 电脑公司ghost xp系统经典优化版集成最常用的装机软件,集成最全面的 ...

  2. 启用Mac(OS X Yosemite)自带的apache

    刚用Mac的时候配置过一次Mac自带的apache,主要是平常自己用mackdown写文档,装成html文件放到apache下方便自己和同事阅读.后来升级各种东西,估计是升级OS X导致apache不 ...

  3. SAE上传文件到storage

    还有什么比代码更清晰的讲解 html代码: 一定需要下面这个: method="post" enctype="multipart/form-data" < ...

  4. 安装SqlServer的时候性能计数器注册表配置单元一致性失败的解决办法

    http://www.2cto.com/database/201204/126772.html

  5. DIV+CSS实现左侧带三角形的提示框

    实现效果

  6. Android简化xml sax解析

    dom解析占用内存大(我这边需要解析各种各样的kml文件,有时4-5M的kml文件使用dom解析很多手机就内存溢出了),也需要引入第三方库,所以使用相对于节省内存很多.不需引入其他库的sax解析就是很 ...

  7. 弹出层在兼容模式和IE8模式下显示不正常

    弹出层在火狐.谷歌.360极速模式.IE6下都能100%面积正常显示,但在IE8和360的兼容模式下只显示弹出层下半部分或右半部分的内容,在主页面加上: <meta http-equiv=&qu ...

  8. STM32之USART-RS485

    转载自:http://www.cnblogs.com/itloverhpu/p/3278014.html 1.今天调试HDMI8X8背板和板卡的通信,一直有问题:背板可以和PC正常通信,背板可以发命令 ...

  9. php 批量更新某字段内容的部分内容 replace(要替换的字段,'被替换的字符串,'替换成的字符串')

    要求: 一个字段值: ------预约---- 要将其中 "预约",改成"预定". 但是我开始写的时候,写成了 update 表名 set smscontent ...

  10. Nagios 自定义插件与安装使用之监控dead datanodes

    现在我使用nagios来监控hadoop的核心进程,rm,nm,dn,nn,zkfc,jn,zk等,但是有时候进程虽然还在,但是日志不刷新,web ui上可以看到有些datanodes节点已经变为de ...