gpt4 book ai didi

c# - 清除 PrintDocument

转载 作者:太空宇宙 更新时间:2023-11-03 22:16:27 29 4
gpt4 key购买 nike

我有一个打印多个文档的方法 (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);
}

我尝试这样做时遇到的错误是:

No overload for 'Document_Clear' matches delegate 'System.Drawing.Printing.PrintEventHandler'.

我对编写自己的事件方法还很陌生(我通常做 winForm 开发,这些都是自动添加的)。如果您能纠正我的方法,或建议一种不同的方法来实现我的目标,我将不胜感激。谢谢!

最佳答案

这行代码

static private void Document_Clear(object sender, PrintPageEventArgs e){
e.Graphics.Clear(Color.White);
}

应该阅读

static private void Document_Clear(object sender, PrintEventArgs e){
e.Graphics.Clear(Color.White);
}

好的,我可以建议的最后一件事是清除 printpage lambda 中的图形。

Document.PrintPage += (sender, e) => { e.Graphics.Clear(Color.White); Document_PrintText(e, inputString);

关于c# - 清除 PrintDocument,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4994686/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com