非常简单的Lambda/事件参数探测

本文关键字:事件 参数 探测 Lambda 简单 非常 | 更新日期: 2023-09-27 18:22:04

所以我只是想把MyReader传递到EventHandler函数中。我知道我必须使用"=>"运算符,但我仍然会遇到错误。这是我的代码:

     private void PrintButton_Click(object sender, RoutedEventArgs e)
     {
      StringReader MyReader= new StringReader(StrTxt);
      PD.PrintPage += new PrintPageEventHandler(this.pd_PrintPage);
     }
     private void pd_PrintPage(object sender, PrintPageEventArgs ev)
     {
     }

非常简单的Lambda/事件参数探测

将其用作发送方和事件参数的附加参数:

PD.PrintPage += (sender, ev) => this.pd_PrintPage(sender, ev, MyReader);
//...
private void pd_PrintPage(object sender, PrintPageEventArgs ev, StringReader reader)
{
    //...
}

您可以在括号中指定参数PD.PrintPage具有(object sender, PrintPageEventArgs ev),然后在=>运算符之后指定要使用的函数。

如果您想传入额外的对象,您需要将它们公开为参数:

private void pd_PrintPage(object sender, PrintPageEventArgs ev, StringReader reader)
 {
 }

然后你可以使用:

 PD.PrintPage += (sender, args) => this.pd_PrintPage(sender, args, MyReader);

请注意,您没有在这里使用=>,但可以:这样做很方便。至少还有两种其他方式可以更详细地做同样的事情。