这个问题已经被问过很多次了,但由于某种原因解决方案不起作用。
我正在动态创建一个 Button 并为其分配一个 EventHandler。
protected void Page_Load (object sender, EventArgs e)
{
Button b = new Button();
b.Click += new EventHandler(Method);
}
protected void Method (object sender, EventArgs e)
{
//Do work here
}
我需要传递一个参数,所以我想到的最简单的方法是:
b.Click += new EventHandler(Method(sender, e, "name"));
protected void Method (object sender, EventArgs e, String name)
{
//Do work here
}
错误:需要方法名称
所以在检查了这里的问题之后,我几乎在每个问题中都找到了相同的解决方案。
b.Click += new EventHandler((sender, e) => Method(sender, e, "name"));
错误:无法在此范围内声明名为“sender”的局部变量,因为它会给“sender”赋予不同的含义,“sender”已在“父或当前”范围中用于表示其他内容。
所以我改为以下:
b.Click += new EventHandler((sender1, e1) => Method(sender1, e1, "name"));
Visual Studio 的错误消失了,但是在运行网页时,我收到了这个错误:
System.ArgumentOutOfRangeException:索引超出范围。必须是非负数且小于集合的大小。
这里有什么问题我真的迷路了。