开源:VS.NET打印页面设置(PageSetupDialog)值老是变、自定义纸张和连续走纸的问题及解决源码(二)

开源: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做打印页面设置值总是变化的解决办法。查看

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值