开源:VS.NET打印页面设置(PageSetupDialog)值老是变、自定义纸张和连续走纸的问题及解决源码(二)
整理:长江支流
关 键 字:VS.NET、打印、页面设置对话框、自定义纸张、连续走纸
日 期:2006-02-09
文章摘要
到网上一搜,有很多关于打印页面设置值怎么老是变、自定义纸张和连续走纸的问题。有很多说法,有些说是VS.NET的bug,有的说必须用API,还有的说...
其实,是我们自己没有研究透,这里给一些解决办法。
上篇说了用PageSetupDialog做打印页面设置值时,每显示一次对话框输入页边距,下次再进入页面设置对话框输后发现原来的值变了的解决办法。
在这篇中,我们一起来解决自定义纸张的问题,不用API也能实现自定义纸张和连续走纸。
这是一个大家特别关心的问题,在CSDN上很多网友经常问这些问题并没有得到很好解决以至于说是VS.net的Bug和一些其它误区。下面用网友的实践来给出答案,很早就想把它写出来了,但是因为里头有一些赞美的话所以我没有及时写到我的Blog上而是在论坛中回复的。现在,还是把它放到我的Blog,要不然对不起这些热心的网友,他们就是要让更多的人知道答案的,我还怕别人说什么呢:)
一位热心网友的来信及解决办法:
-----------------------------------------------------
周兄你好,
前几天我问你的一个连续纸打印的问题,现在已经解决了,方法虽然不太好,但是简单有效。我把它记在我的网络日志里了。
http://spaces.msn.com/members/vdonkey/
本来想去网上发一发,可是多数相关贴子已结贴。所以我想到发给你才更可能会帮到其它人。如果有人向你求助相关问题,可以让他参考一下。
再次感谢你对我们的帮助。
另一位热心网友的来信及解决办法:
(原贴)
http://community.csdn.net/Expert/topic/4318/4318195.xml?temp=.8120691
-----------------------------------------------------
==== 第二次100分提问 针式打印机走纸太多,如何解决? ====
谢谢 flygoldfish(长江支流) ,你的程序PrintPageSetUp
给了我启发,并且解决了问题,在此与诸位共享:
在定义PrintDocument时定义纸张是会一起冲突的,即:
在PrintDocument中定义纸张可以模拟显示正确,但在打印
时,总是按照A4走纸,而且屏蔽了打印时所做的打印设置。
所以,你最好在打印时使用打印设置,象 flygoldfish(长江支流)
那样封装在PrintSettings中最好。举例如下:
PrtMyPrintDocument pd = new PrtMyPrintDocument(my); //假定为默认打印机
pd.DefaultPageSettings = this.PrtSetUp(pd);
PrintPreviewDialog dlg = new PrintPreviewDialog() ;
dlg.Document = pd;
DialogResult result = dlg.ShowDialog();
if (result == DialogResult.OK)
{
pd.Print();
}
其中PrtMyPrintDocument是我自己定义的PrintDocument继承类,由于一开始
定义了纸张,所以一直不能正确走纸,现在正常。
this.PrtSetUp(pd)方法很简单,参考flygoldfish(长江支流)的代码如下:
private PageSettings PrtSetUp(PrintDocument printDocument)
{
//声明返回值的PageSettings
PageSettings ps = new PageSettings();
//申明并实例化PageSetupDialog
PageSetupDialog psDlg = new PageSetupDialog();
try
{
//相关文档及文档页面默认设置
psDlg.Document = printDocument;
psDlg.PageSettings = printDocument.DefaultPageSettings;
//显示对话框
DialogResult result = psDlg.ShowDialog();
if (result == DialogResult.OK)
{
ps = psDlg.PageSettings;
printDocument.DefaultPageSettings = psDlg.PageSettings;
}
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString(),"出现打印错误");
}
finally
{
psDlg.Dispose();
psDlg = null;
}
return ps;
}
你完全可以定义自己的其他参数,再一次谢谢长江支流)!
希望以上对各位有用。
------------------------------------------------------------------------------
至此,关于打印页面设置(PageSetupDialog)值老是变、自定义纸张和连续走纸的问题给出了解决方法,希望能给大家一些启示。
再次感谢热心的网友,特别是以上两位朋友的回复。
访问我在CSDN上的Blog:
http://blog.csdn.net/flygoldfish
声明:本文版权为周方勇所有,如需转载,请保留完整的内容及出处。
相关资源:
用PageSetupDialog做打印页面设置值总是变化的解决办法。查看