【问题标题】:C# - modify button.click event to pass data?C# - 修改 button.click 事件以传递数据?
【发布时间】:2010-12-20 04:34:28
【问题描述】:

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

【问题讨论】:

    标签: c# events


    【解决方案1】:

    你不需要传递按钮的标签——按钮是作为发送者提供的,所以你可以直接获取标签:

    private void HandleButtonClick(object sender, EventArgs e)
    {
        Button button = (Button) sender;
        object tag = button.Tag;
        ...
    }
    

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

    button.Click += (s, e) => SaveDocument(someLocalVariable);
    

    在该示例中,someLocalVariable 是连接事件的方法的本地 - 它当然可以是一个实例变量,但是您实际上不需要传递它,因为无论如何您都可以访问。

    【讨论】:

    • 正如 Jon Skeet 指出的那样,有一种非常直接的方法可以实现这一点。但是,我会质疑您为什么将二进制数组存储为按钮标签。有没有更好的方法呢?
    【解决方案2】:

    像这样获取你的标签

    byte[] myData = ((Button)sender).Tag
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-27
      • 2012-05-06
      • 2019-10-19
      • 2012-04-25
      • 2020-09-11
      • 1970-01-01
      • 2012-03-28
      相关资源
      最近更新 更多