【发布时间】:2015-06-08 19:55:02
【问题描述】:
我尝试在运行时创建一个控件(不是一个,“n”个运行时控件) 但现在我想为每个控件创建事件 我做了一个,但它只适用于我在运行时创建的最后一个控件 如何为每个控件创建事件?
private void CreateRuntimeControl(PictureBox pic)
{
lbl = new Label();
number++;
locationX = locationX + 20;
locationY = locationY + 20;
lbl.Name = number.ToString();
lbl.Size = new System.Drawing.Size(30, 20);
lbl.Location = new System.Drawing.Point(10 + locationX, 10 + locationY);
lbl.Text = number.ToString();
lbl.BackColor = Color.Gray;
pic.Controls.Add(lbl);
lbl.MouseDown += lbl_MouseDown;
}
和事件
private void lbl_MouseDown(object sender, MouseEventArgs e)
{
MessageBox.Show(lbl.Name);
}
最好的问候
【问题讨论】:
-
试试 lbl.MouseDown += lbl_MouseDown;
-
什么意思?你能解释一下吗?
-
你不应该每次都实例化一个新的 EventHandler,而只是订阅你已经拥有的。
-
这就是我在顶部编写的代码,当我每次通过单击按钮添加标签时,当我单击它们时,它只会显示最后一个标签而不是我单击的标签
-
如果您仅引用最后一个创建的标签,请查看 noMad17 的答案
标签: c# events runtime controls