这是一些表示我的问题的示例代码。它增加了 5LinkLabel
秒,每个都有一个Click
事件处理程序。标签上的文本是 1...5,单击时应该显示相同的结果,但是当我单击每个标签时,每个标签都会收到相同的消息:5。
就像最后一个处理程序正在覆盖其他每个标签上的处理程序。我以为我已经通过在循环的每次迭代中创建一个新的EventHandler
和新的来避免这种情况。LinkLabel
我将每个添加LinkLabel
到FlowLayoutPanel
.
为什么我会得到这个结果,我该如何解决?
List<Test> objects = new List<Test>();
for (int i = 0; i < 5; i++)
{
objects.Add(new Test(i + 1));
}
foreach (Test t in objects)
{
LinkLabel label = new LinkLabel();
label.AutoSize = true;
label.Text = t.a + "";
label.Click += new EventHandler((sender, args) =>
{
MessageBox.Show(t.a + "");
});
flowLayoutPanel1.Controls.Add(label);
}