2012-03-30 11 views
9

Korzystam z poniższego kodu, aby wydrukować obraz z mojego kodu C#. Czy niektóre ciało może mi powiedzieć, jak przekazać argument filePath jako argument podczas przydzielania procedury obsługi zdarzeń?Jak przekazać parametr do mojego kodu obsługi zdarzeń do drukowania obrazu

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

Odpowiedz

21

Najprostszym sposobem jest użycie wyrażenia lambda:

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

... 

private static void DrawImage(string filePath, Graphics graphics) 
{ 
    ... 
} 

Lub jeśli nie masz wiele do zrobienia, można nawet Inline cała sprawa:

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(); 
+0

dzięki. Zadziałało. – Happy

2

Najprostszym sposobem, aby to zrobić, to użyć anonimową funkcję obsługi zdarzenia. To pozwoli Ci zdać filePath bezpośrednio

public static bool PrintImage(string filePath) { 
    PrintDocument pd = new PrintDocument(); 
    pd.PrintPage += delegate (sender, e) { printPage(filePath, e); }; 
    pd.Print(); 
    return true; 
} 

private static void printPage(string filePath, PrintPageEventArgs e) { 
    ... 
} 
+0

Dzięki Jared. Ale jak widzisz, moja metoda printPage korzystająca z argumentu e. Jak sobie z tym poradzić? – Happy

+0

@Happy zupełnie to przegapił. zaktualizowałem moją odpowiedź, aby przekazać ją również – JaredPar

+0

skąd pochodzi "nadawca"? – Happy

Powiązane problemy