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

本文关键字:事件 参数 click 是否 编辑 button WPF | 更新日期: 2023-09-27 18:06:56

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

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

(object sender, RoutedEventArgs e)

我最近读到事件的参数是在委托中定义的。这是每个button_clicked事件的一个委托吗?还是每个按钮都有自己独立的委托?我在这里解释得不太清楚……

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

我问这个问题的原因是我认为可能有一种方法可以将变量传递给另一个类-进入它的订阅者方法。不幸的是,订阅者方法只接受两个参数。所以我现在在寻找一种容易传递变量的方法,这是一种"背想"的解决方案。

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

你们想得太多了:)只要使用lambda,你就可以重新定义任何你想要的委托:

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

您可以设置按钮的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;
}