user1819301
user1819301

Reputation: 111

Very Simple Lambda /Event Parameters Prob

So simply I am trying to pass MyReader into the EventHandler function. I know I have to use the " => " operator, but I still get errors. Here's my code:

     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)
     {
     }

Upvotes: 0

Views: 180

Answers (2)

Marc Gravell
Marc Gravell

Reputation: 1063068

If you want to pass in extra objects, you'll want to expose them as parameters:

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

Then you can use:

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

Note that you don't have to use => here, but yes: it is convenient to do it that way. There are at least two other ways of doing the same thing more verbosely.

Upvotes: 0

pascalhein
pascalhein

Reputation: 5846

Use it as an additional argument to the sender and the eventargs:

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

//...

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

You specify the arguments PD.PrintPage has (object sender, PrintPageEventArgs ev) in the parentheses, and then the function you want to use after the => operator.

Upvotes: 4

Related Questions