【发布时间】:2016-12-13 11:15:34
【问题描述】:
我正在尝试使用 for 语句以编程方式向控件添加一些按钮。
我希望完成的是每个按钮都会触发带有迭代器值的点击事件。
这是我的代码示例:
public class Foo
{
public Foo(int val)
{
//Do something with val
}
}
//for-statement
for(int i = 0; i < 5; ++i)
{
var button = new Button();
button.Click += (sender, e) =>
{
var text = new Foo(i);
}
}
在我的场景中,它使用迭代器的最后一个值初始化 Foo,即 4。
如何发送迭代器的每个值?
Button1->点击->Foo(0)
Button2->点击->Foo(1)
...等等。
【问题讨论】:
-
你尝试了什么?
-
public class ValueWrapper<T> where T : struct { T _Value; public T Value { get { return _Value; } set { _Value = value; } } public ValueWrapper<T>(T initial) { _Value = initial; } }然后使用var @int = new ValueWrapper<int>(i); button.Click += (sender, e) => { var text = @int; }; -
@PeterB,这是一个很好的(非常相似的)副本,感谢您的发现。
标签: c# events button iterator click