如何将参数传递给我的事件处理代码以打印图像

Hap*_*ppy 9 c# printing event-handling

我使用下面的代码从我的C#代码打印图像.当我分配我的事件处理程序时,有些正文可以告诉我如何将filePath作为参数传递吗?

  public static bool PrintImage(string filePath)
    {
        PrintDocument pd = new PrintDocument();
        pd.PrintPage += new PrintPageEventHandler(printPage);
        pd.Print();
        return true;

    }
    private static void printPage(object o, PrintPageEventArgs e)
    {
        //i want to receive the file path as a paramter here.

        Image i = Image.FromFile("C:\\Zapotec.bmp");
        Point p = new Point(100, 100);
        e.Graphics.DrawImage(i, p);
    }
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 21

最简单的方法是使用lambda表达式:

PrintDocument pd = new PrintDocument();
pd.PrintPage += (sender, args) => DrawImage(filePath, args.Graphics);
pd.Print();

...

private static void DrawImage(string filePath, Graphics graphics)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

或者,如果你没有很多工作要做,你甚至可以内联整个事情:

PrintDocument pd = new PrintDocument();
pd.PrintPage += (sender, args) => 
{
    Image i = Image.FromFile(filePath);
    Point p = new Point(100, 100);
    args.Graphics.DrawImage(i, p);
};
pd.Print();
Run Code Online (Sandbox Code Playgroud)