【发布时间】:2010-12-20 04:34:28
【问题描述】:
我正在以编程方式创建按钮,每个按钮都有一个标记二进制数组。创建时我正在绑定一个事件Button.Click,但我不知道如何添加参数,因为事件处理程序已经准备好了。我需要将按钮的标签传递给该事件调用的方法。
【问题讨论】:
我正在以编程方式创建按钮,每个按钮都有一个标记二进制数组。创建时我正在绑定一个事件Button.Click,但我不知道如何添加参数,因为事件处理程序已经准备好了。我需要将按钮的标签传递给该事件调用的方法。
【问题讨论】:
你不需要传递按钮的标签——按钮是作为发送者提供的,所以你可以直接获取标签:
private void HandleButtonClick(object sender, EventArgs e)
{
Button button = (Button) sender;
object tag = button.Tag;
...
}
另一种选择是使用匿名方法或 lambda 表达式手动连接事件,这样您就可以使用更合适的签名调用另一个方法:
button.Click += (s, e) => SaveDocument(someLocalVariable);
在该示例中,someLocalVariable 是连接事件的方法的本地 - 它当然可以是一个实例变量,但是您实际上不需要传递它,因为无论如何您都可以访问。
【讨论】:
像这样获取你的标签
byte[] myData = ((Button)sender).Tag
【讨论】: