c# - 将参数传递给 EventHandler 中的方法

标签 c# asp.net button event-handling arguments

此问题已被问过很多次,但由于某种原因该解决方案无效。

我正在动态创建一个 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
}

Error: Method name expected

所以在查了这里的题之后,我发现几乎每道题的答案都是一样的。

b.Click += new EventHandler((sender, e) => Method(sender, e, "name"));

Error: A local variable named "sender" cannot be declared in this scope because it would give a different meaning to "sender", which is already used in a 'parent or current' scope to denote something else.

所以我改为:

b.Click += new EventHandler((sender1, e1) => Method(sender1, e1, "name"));

Visual Studio 的错误消失了,但是在运行网页时,我收到了这个错误:

System.ArgumentOutOfRangeException: Index was out of range. Must be a non-negative and less than the size of the collection.

这里有什么问题我真的迷路了。

最佳答案

您将事件处理程序添加到自定义方法的声明是正确的。错误的根源是别的。当您遇到此异常时查看 CallStack 并查看您的错误的实际来源是什么。

关于c# - 将参数传递给 EventHandler 中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17284742/

相关文章:

c# - 虚拟成员是否通过反射调用(在正常情况下)?

c# - 如何在 chrome 中启用 VLC 插件?

java - 我的游戏不会停止显示获胜者

c# - Collection.Add() 的工作流程

c# - 有人可以向我解释一下这个 LINQ/Entity Framework 查询实际上是如何工作的吗?

c# - 是否有用于将属性从一个类绑定(bind)到另一个类的开源 C# 库?

c# - DataAdapter 不需要打开数据库连接?

javascript - Window.open() 作为模式弹出行为

java - 倒计时期间取消按钮

forms - PowerShell 取消按钮停止脚本