C# - 修改button.click事件来传递数据?

Pet*_*etr 1 c# events

我以编程方式创建按钮,每个按钮都有一个标签二进制数组.虽然创建我绑定一个事件Button.Click但我不知道如何添加参数,因为事件处理程序已经准备好了.我需要将按钮的标记传递给该事件调用的方法.

Jon*_*eet 7

您无需传递按钮的标记 - 按钮作为发件人提供,因此您可以直接获取标记:

private void HandleButtonClick(object sender, EventArgs e)
{
    Button button = (Button) sender;
    object tag = button.Tag;
    ...
}
Run Code Online (Sandbox Code Playgroud)

另一种方法是使用匿名方法或lambda表达式手动连接事件,这使您可以使用更合适的签名调用另一个方法:

button.Click += (s, e) => SaveDocument(someLocalVariable);
Run Code Online (Sandbox Code Playgroud)

在该示例中,someLocalVariable该方法的本地连接事件 - 它当然可以是实例变量,但是您实际上并不需要传递它,因为您仍然可以访问它.