2012-03-30 5 views
9

Sto utilizzando il codice seguente per stampare un'immagine dal mio codice C#. Qualcuno può dirmi come passare il filePath come argomento quando assegno il mio gestore di eventi?Come passare il parametro al codice di gestione eventi per la stampa dell'immagine

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

risposta

21

Il modo più semplice è quello di utilizzare un'espressione lambda:

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

... 

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

O se non hai un sacco da fare, si potrebbe anche INLINE la tutto:

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

grazie. Ha funzionato. – Happy

2

Il modo più semplice per eseguire questa operazione è utilizzare una funzione anonima come gestore di eventi. Questo vi permetterà di passare il filePath direttamente

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

Grazie Jared. Ma come vedi, il mio metodo printPage utilizza l'argomento e. Come gestirlo? – Happy

+0

@Happy lo ha completamente perso. Ho aggiornato la mia risposta per passarla anche da – JaredPar

+0

da dove proviene 'sender'? – Happy

Problemi correlati