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);  this

 

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)这个方法 设计

相关文章
相关标签/搜索