首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >清除A PrintDocument

清除A PrintDocument
EN

Stack Overflow用户
提问于 2011-02-14 16:39:00
回答 3查看 4.7K关注 0票数 1

我有一种方法可以打印多个文档(PrintIts)。它工作得很好,除非第一个打印完成后,第二个打印包括第一个打印在上面。就像第二印上有两层。第三次打印,包括第一次和第二次在其之上(仿佛每个打印是在一个透明的层)。基本上,我想要做的是清楚文档的内容与每一个打印。

代码语言:javascript
复制
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);
}

我尝试通过以下操作来完成这一任务:

代码语言:javascript
复制
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开发,这些方法是自动添加的)。如果你能纠正我的方法,或者建议一个不同的方法来完成我的目标,我会非常感激的。谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-02-14 16:48:46

这一行代码

代码语言:javascript
复制
static private void Document_Clear(object sender, PrintPageEventArgs e){
    e.Graphics.Clear(Color.White);
}

应改为

代码语言:javascript
复制
static private void Document_Clear(object sender, PrintEventArgs e){
    e.Graphics.Clear(Color.White);
}

好的,我最后建议的是清除打印页面lambda中的图形。

代码语言:javascript
复制
Document.PrintPage += (sender, e) => { e.Graphics.Clear(Color.White); Document_PrintText(e, inputString);
票数 2
EN

Stack Overflow用户

发布于 2011-02-14 16:44:13

为什么不直接在每次打印之前创建一个新的打印文档?

所以在PrintIt

代码语言:javascript
复制
static public void PrintIt(string inputString){    
    Document = new PrintDocument();
    Document.PrintPage += (sender, e) => Document_PrintText(e, inputString);
    Document.Print();
}

你可能把事情复杂化了。

票数 2
EN

Stack Overflow用户

发布于 2011-02-14 16:43:32

您必须在您的PrintPageEventArgs方法中将"PrintEventArgs e“更改为”PrintEventArgs e“,请参阅此处:http://msdn.microsoft.com/en-us/library/system.drawing.printing.printeventhandler.aspx

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4994686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档