使用 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
我已经阅读了很多类似的主题,但我似乎无法理解这一主题。
在我遇到这样的事情之前:
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