如何向按钮单击事件处理程序添加附加参数?

How can I add an additional parameter to a button click EventHandler?

在 C# 中,向按钮事件调用添加额外 属性 的最佳方法是什么?

这是 EventHandler 的代码:

button.Click += new EventHandler(button_Click);

这是 button_Click 的代码:

private void button_Click(object sender, EventArgs e)
{

}

如果我想在 button_Click 函数参数中添加一个 PropertyGrid 参数,最好的方法是什么?

我想这样做,因为 button.Click 代码在一个具有 PropertyGrid 参数的函数中,而在 button_Click 函数中,我需要设置 PropertyGrid 选定对象。这仅在单击 button.Click 按钮时设置。

如果我将按钮的标签设置为 PropertyGrid 对象,如何在 button_Click 代码中检索此标签对象?

button_Click事件是从对象调用的,发送者是对象,不是按钮。

我可以在代码方面得到一些帮助吗?

您无法说服 Button 它应该知道有关 PropertyGrid 的任何信息。当它触发它的 Click 事件时,它只能告诉你它所知道的。这是一成不变的。

您可以使用 lambda 表达式简单地解决这个问题,它可以捕获 PropertyGrid 参数值并将其传递给方法。大致:

    private void SubscribeClick(PropertyGrid grid) {
        button.Click += new EventHandler(
            (sender, e) => button_Click(sender, e, grid)
        );
    }