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( ...
随机推荐
- Swift开发第七篇——字面量转换&下标
本篇分为两部分: 一.Swift 中的字面量转换 二.Swift 中的下标 一.Swift 中的字面量转换 所谓字面量就是指像特定的数字,字符串或者是布尔值这样能够直接了当地指出自己的类型并未变量进行 ...
- java 实现(代码) -- 水仙花数 + 杨辉三角形
/* 在控制台输出所有的“水仙花数” 水仙花:100-999 在以上数字范围内:这个数=个位*个位*个位+十位*十位*十位+百位*百位*百位 例如:xyz=x^3 +y^3 +z^3 怎么把三位数字拆 ...
- JSON字符串与JSON对象
JSON对象是直接可以使用JQuery操作的格式,和js中的对象一样,可以用对象(类名)点出属性(方法). JSON字符串仅仅只是一个字符串,一个整体,不截取的话没办法取出其中存储的数据,不能直接使用 ...
- js 模仿块级作用域(私有作用域)、私有变量
function outputNumbers(count){ var privateVariable = 10;//私有/局部变量,函数外部不能被访问 publicVariable = 20;//全局 ...
- 十五天精通WCF——第九天 高级玩法之自定义Behavior
终于我又看完了二期爱情保卫战,太酸爽了,推荐链接:http://www.iqiyi.com/a_19rrgublqh.html?vfm=2008_aldbd,不多说,谁看谁入迷,下面言归正传, 看看这 ...
- 0021 Java学习笔记-面向对象-包、构造器
封装 面向对象的三大特征: 封装 继承 多态 封装: 将对象的状态信息隐藏,不允许外部程序直接访问 通过该类提供的方法来访问和操作 有啥用: 隐藏类的实现细节 在方法中加入控制逻辑,限制对成员变量的不 ...
- gulp系列:简单实践
coffescript测试源码 gulp = require('gulp') #删除 1.清空目录 常用插件 gulp-clean .del (nodejs模块) del = require('d ...
- 烂泥:php5.6源码安装与apache集成
本文由秀依林枫提供友情赞助,首发于烂泥行天下. apache对php的支持是通过apache的mod_php5模块来支持的,这点与nginx不同.nginx是通过第三方的fastcgi处理器才可以对p ...
- Ubuntu为何永远绝对的免费?
Ubuntu(发行版)是一个Linux大家族,而且个个都称得上是软件精品.所谓“绝对”就是没有任何条件.不受任何限制的意思.那么,Ubuntu怎么可能是永远绝对的免费?难道这不是蛊惑人心的宣传.不能兑 ...
- LINUX下NFS系统的安装配置
准备:NFS系统服务器IP 192.168.135.1 ,NFS共享目录/mnt/NFS 一.安装NFS 查看nfs是否安装 #rpm -qa | grep nfs 若没有则安装nfs包 #yum i ...