使用 Lambda 的事件处理程序中的参数

Argument in Event Handler using Lambda

我已经阅读了很多类似的主题,但我似乎无法理解这一主题。

在我遇到这样的事情之前:

PrintDocument pd = new PrintDocument();
pd.PrintPage += PrintPage;
pd.PrinterSettings.PrinterName = photoPrinter;
pd.Print();

private void PrintPage(object sender, PrintPageEventArgs e)
{
  Image i = Image.FromFile(@"C:\workspace\FullSizeRender.jpg");
  Point p = new Point(0, 0);
  e.Graphics.DrawImage(i, p);
}

因为很明显,硬编码要打印的文件名是行不通的。我尝试使用 lambda 表达式,结果是这样的。我知道这是错误的,因为首先它说我缺少一个“;”。但是调用 pd.Print(); 在哪里?现在走?

PrintDocument pd = new PrintDocument();
pd.PrinterSettings.PrinterName = photoPrinter;
pd.PrintPage += (s, eventArgs) =>
    {
        Image i = Image.FromFile(newFile);
        Point p = new Point(0, 0);
        eventArgs.Graphics.DrawImage(i, p);
    }
pd.Print();

谢谢

不管有没有lambda,这还是c#。记得用分号结束语句:

pd.PrintPage += (s, eventArgs) =>
{
    Image i = Image.FromFile(newFile);
    Point p = new Point(0, 0);
    eventArgs.Graphics.DrawImage(i, p);
};  // <-- here