C# 是否可以编辑 WPF button_click 事件的委托参数?

C# Is it possible to edit delegate parameters for WPF button_click events?

这可能是一个非常愚蠢的问题,但从好的方面来说,我认为之前没有人在这里问过这个问题(?)

所有 button_clicked 订阅者方法中的默认参数数量为两个:

(object sender, RoutedEventArgs e)

我最近读到事件的参数是在委托中定义的。现在每个 button_clicked 事件只有一个代表吗?还是每个按钮都有自己独立的代表?我在这里没有很好地解释自己...

假设我想将三个参数传递给单个订阅者方法而不是上面的两个,我刚刚在设计器视图中双击我的按钮后自动为我生成了一些简单的代码。该方法订阅的 class 在哪里?有没有办法可以编辑它的委托并添加另一个参数?

我问这个的原因是我认为可能有一种方法可以将一个变量传递给另一个 class - 进入它的订阅者方法。不幸的是,订阅者方法只接受两个参数。所以我现在正在寻找轻松传递我的变量的方法,这是一种 'back-of-the-mind' 类的解决方案。

您可以设置按钮的 Tag 参数,然后在处理程序中检索它。

如果按钮定义在XAML:

如果按钮在代码中定义:

var button  = new Button() {Tag = "Hi"};

然后在事件处理程序中:

public void Click(object sender, RoutedEventArgs e)
{
   // this will give you the string "Hi"
   string hi = (string)((Button)sender).Tag;
}

你们真是想多了:)。只需使用 lamda,您就可以根据需要重新定义任何委托:

theButton.Click += (x, y) => myHandler(someRandomParam1, someRandomParam2, someRandomParam3, someRandomParam4, ... someRandomParam73);

就是简单。