Winfrom动态创建控件
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动态创建控件的更多相关文章
- 小子给大家分享一个或者多个新手创建tableview经常会遇到的坑(动态创建控件,xib的重用)
小子最近做了一个根据接口返回的数据在Cell中动态创建控件,感觉应该会一部分人卡在这里,小子就跟大家分享一下: 1.控件重复创建:这个问题出现的原因是动态创建的cell内容的时候,无法进行重用设置,所 ...
- VisionPro笔记(1):动态创建控件
VisionPro学习笔记(1):动态创建控件 有的时候可能需要在程序中动态创建控件,VisionPro实例中提供了一例动态创建Blob控件的方法.当然,动态创建过多的控件会极大的消耗系统的资源,建 ...
- 【转载】MFC动态创建控件及其消息响应函数
原文:http://blog.sina.com.cn/s/blog_4a08244901014ok1.html 这几天专门调研了一下MFC中如何动态创建控件及其消息响应函数. 参考帖子如下: (1)h ...
- MFC动态创建控件及其消息响应函数
这几天专门调研了一下MFC中如何动态创建控件及其消息响应函数. 参考帖子如下: (1)http://topic.csdn.net/u/20101204/13/5f1b1e70-2f1c-4205-ba ...
- delphi动态创建控件
动态创建控件 其实动态创建控件很简单,相信看过本文后你会全明白的. 1 先在单元的initialization 部分注册它,(这样在单元使用时会自动注册的)如: RegisterClass( TBut ...
- MFC 动态创建控件
动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的. 一.创建动态控件: 为了对照,我们先来看一下静态控件的创建. 放置静态控件时必须先建立一个容器,一 ...
- 在DELPHI中动态创建控件以及控件的事件
在DELPHI中我们经常要动态的创建控件以及控件的事件.例如,我们可能想根据程序需要动态的创建一些Tshape组件来创建某个图形,并使得在鼠标移动上去之后可以完成某些操作.这一般需要需要三步: 生成一 ...
- 动态创建控件 #Create(...)
在类中创建一个控件对象;例:CButton m_btn; 用Create创建一个对象(#其实已经与其绑定)m_btn.Create(.....); #注意Create()函数的参数 问题一:点击一个b ...
- andriod 动态创建控件
Button btNext=(Button)findViewById(R.id.next); btNext.setOnClickListener(new Button.OnClickListener( ...
随机推荐
- 网络热恋之json解析
现在的app开发很少有用到XML解析的了,主流的则是JSON. // // ViewController.m // CX-JSON解析(三方JSONKit-master) #import " ...
- javascript中,如何判断input中输入的为纯数字
用正则表达式判断.如果纯数字是指整数的话(不包含小数点),可以这样: function check(){ var value = document.getElementById("input ...
- store 加载异常处理与加载信息提示
var msgTip = ''; // 一定要定义在使用前,且定义为全局变量 /--------------------------------store--------------------- ...
- HTML页面禁止选择、页面禁止复制、页面禁止右键
HTML页面内容禁止选择.复制.右键刚在一个看一个站点的源代码的的时候发现的,其实原来真的很简单 <body leftmargin=0 topmargin=0 oncontextmenu='re ...
- 后台管理UI皮肤的选择
后台管理UI的选择 目录 一.EasyUI 二.DWZ JUI 三.HUI 四.BUI 五.Ace Admin 六.Metronic 七.H+ UI 八.Admin LTE 九.INSPINIA 十. ...
- Mongodb Manual阅读笔记:CH7 索引
7索引 Mongodb Manual阅读笔记:CH2 Mongodb CRUD 操作Mongodb Manual阅读笔记:CH3 数据模型(Data Models)Mongodb Manual阅读笔记 ...
- SSIS技巧--优化数据流缓存
问题 我们经常遇到一种情况,在SSMS中运行很慢的一个查询,当把查询转化成从源到目的数据库的SSIS数据流以后,需要花费几倍的时间!源和数据源都没有任何软硬件瓶颈,并且没有大量的格式转换.之前看了很多 ...
- SQL server基础知识(表操作、数据约束、多表链接查询)
SQL server基础知识 一.基础知识 (1).存储结构:数据库->表->数据 (2).管理数据库 增加:create database 数据库名称 删除:drop database ...
- js判断游览器是移动端还是PC端
js判断网页游览器是移动端还是PC端 <script type="text/javascript"> function browserRedirect() { var ...
- 项目搭建系列之一:使用Maven搭建SpringMVC项目
约定电脑都安装了eclipse,且已配置好Maven以及eclipse插件. 1.Eclipse 2.maven 3.Eclipse 需要安装maven插件.url:maven - http://do ...