Как передать параметр в мой код обработки событий для печати изображения - PullRequest
9 голосов
/ 30 марта 2012

Я использую приведенный ниже код для печати изображения из моего кода C #.Может ли кто-нибудь сказать мне, как передать filePath в качестве аргумента, когда я назначаю свой обработчик событий?

Ответы [ 2 ]

21 голосов
/ 30 марта 2012

Самый простой способ - использовать лямбда-выражение:

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

...

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

Или, если вам нечем заняться, вы можете даже встроить все это:

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();
2 голосов
/ 30 марта 2012

Самый простой способ сделать это - использовать анонимную функцию в качестве обработчика событий. Это позволит вам передать filePath напрямую

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) {
  ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...