У меня есть метод, который делает печать нескольких документов (PrintIts). Он работает довольно хорошо, за исключением того, что после того, как первый отпечаток завершен, второй отпечаток включает в себя первый отпечаток поверх него. Как будто на втором отпечатке два слоя. Третий отпечаток включает в себя первый и второй поверх него (как если бы каждый отпечаток был на прозрачном слое). По сути, я стараюсь очищать содержимое документа с каждым отпечатком.
static private PrintDocument Document = new PrintDocument();
static public void PrintIts(IEnumerable<string> inputStrings){
foreach(string inputString in inputStrings){
PrintIt(inputString);
}
}
static public void PrintIt(string inputString){
Document.PrintPage += (sender, e) => Document_PrintText(e, inputString);
Document.Print();
}
static private void Document_PrintText(PrintPageEventArgs e, string inputString) {
e.Graphics.DrawString(inputString, new Font("Courier New", 12), Brushes.Black, 0, 0);
}
Я попытался сделать это, выполнив следующее:
static public void PrintIt(string inputString){
Document.PrintPage += (sender, e) => Document_PrintText(e, inputString);
Document.EndPrint += Document_Clear; //<- I added this extra line
Document.Print();
}
static private void Document_Clear(object sender, PrintPageEventArgs e){
e.Graphics.Clear(Color.White);
}
Ошибка, которую я получаю при попытке сделать это:
Нет перегрузки для Document_Clear
совпадает с делегатом
'System.Drawing.Printing.PrintEventHandler'.
Я довольно новичок в написании собственных методов событий (обычно я занимаюсь разработкой winForm, и они добавляются автоматически). Если вы можете исправить мой метод или предложить другой для достижения моей цели, я был бы очень признателен. Спасибо!