C#动态添加控件,并生成事件
来介绍一个动态添加窗体控件和对应事件的例子:
一、在窗体中拖入一个panel命名为panel1,我们将在这个panel中添加一串label控件并生成单击事件。
二、在load事件中加入如下代码:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
Label[] l = new Label[209];
this.panel1.Controls.Clear();
int top = 10;
int i = 0;
for (int n = 0; n < 209; n++)
{
if (n % 19 == 0 && n != 0)
{
i++;
if (i % 11 == 0)
{
top = 10 * n;
i = 0;
}
else
{
top = 10;
}
}
l[n] = new Label();
l[n].AutoSize = true;
l[n].Top = top;
l[n].Location = new Point(i * 80 + 2, top);
l[n].Text = n.ToString();
l[n].Visible = true;
l[n].Click += new EventHandler(l_Click);
this.panel1.Controls.Add(l[n]);
top = top + 21;
}
this.panel1.Controls.Clear();
int top = 10;
int i = 0;
for (int n = 0; n < 209; n++)
{
if (n % 19 == 0 && n != 0)
{
i++;
if (i % 11 == 0)
{
top = 10 * n;
i = 0;
}
else
{
top = 10;
}
}
l[n] = new Label();
l[n].AutoSize = true;
l[n].Top = top;
l[n].Location = new Point(i * 80 + 2, top);
l[n].Text = n.ToString();
l[n].Visible = true;
l[n].Click += new EventHandler(l_Click);
this.panel1.Controls.Add(l[n]);
top = top + 21;
}
上面的代码在一个页面中绘制210个label每列20个,并对其进行单击事件绑定到l_Click();
下面是针对每一个label的单击事件:
private void l_Click(object sender, EventArgs e)
{
Label l = (Label)sender;
MessageBox.Show(l.Text.ToString());
}
{
Label l = (Label)sender;
MessageBox.Show(l.Text.ToString());
}
结束。