非常简单的Lambda /事件参数问题

时间:2013-07-12 17:27:03

标签: c# parameters lambda

所以我只想尝试将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)
     {
     }

2 个答案:

答案 0 :(得分:4)

将其用作发件人和eventargs的附加参数:

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

//...

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

您在括号中指定PD.PrintPage包含{({1}})的参数,然后在object sender, PrintPageEventArgs ev运算符后指定要使用的函数。

答案 1 :(得分:0)

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

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

然后你可以使用:

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

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