这个问题已经被问了很多次,但是解决方案因某些原因无法正常工作。
我正在动态创建一个按钮并为其分配一个事件处理程序。
我正在动态创建一个按钮并为其分配一个事件处理程序。
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"不同的含义,而它已经在“父级或当前”作用域中用于表示其他内容。
所以我改成了以下内容:
b.Click += new EventHandler((sender1, e1) => Method(sender1, e1, "name"));
在 Visual Studio 中的错误消失了,但是运行网页后,我接收到了这个错误:
System.ArgumentOutOfRangeException:索引超出范围。必须为非负数,并且小于集合大小。
这里出了什么问题,我真的很迷茫。
ArgumentOutOfRangeException
错误是在那个 EventHandler 行抛出的还是其他地方? - keyboardP