到网上一搜,有很多关于打印页面设置值怎么老是变、自定义纸张和连续走纸的问题。有很多说法,有些说是VS.NET的bug,有的说必须用API,还有的说...
    其实,是我们自己没有研究透,这里给一些解决办法。

用PageSetupDialog做打印页面设置值时,每显示一次对话框输入页边距,下次再进入页面设置对话框输后发现原来的值变了,再下次再变?

为什么呢,这并不是VS.net的bug,其实不能怪微软,人家是做全球的,而我们使用的是中文版,存在一个公制和美制的单位转换问题。

一般使用页面设置值对话框时是把工具箱中的这个控件拖到窗口用,其实这样不方便,也不利于代码的复用和统一。我做了一个 PrinterPageSetting类,把有关打印方面的对话框进行了二次封装,特别方便使用。并在我的Blog中写了两篇文档,并为CSDN主页收录为头条精华。下面给出链接:

NET环境下有关打印页面设置、打印机设置、打印预览对话框的实现及应用: http://blog.csdn.net/flygoldfish/archive/2004/08/17/77208.aspx
http://blog.csdn.net/flygoldfish/archive/2004/09/06/95685.aspx

并把关于页面设置对话框的源码列出来,以供大家参考:

#region 页面设置对话框 protected virtual PageSettings ShowPageSetupDialog(PrintDocument printDocument)
  ///
  /// 页面设置对话框,可以独立使用
  ///
  ///
  ///
  ///
  /// 作    者:周方勇
  /// 修改日期:2004-08-07
  ///
  protected virtual PageSettings ShowPageSetupDialog(PrintDocument printDocument)
  {
            //检查printDocument是否为空,空的话抛出异常
            ThrowPrintDocumentNullException(printDocument);

//声明返回值的PageSettings
   PageSettings ps = new PageSettings();

//申明并实例化PageSetupDialog
   PageSetupDialog psDlg = new PageSetupDialog();

ps = printDocument.DefaultPageSettings;

try
   {  
    //相关文档及文档页面默认设置
    psDlg.Document = printDocument;

Margins mg = printDocument.DefaultPageSettings.Margins;
    if (System.Globalization.RegionInfo.CurrentRegion.IsMetric)
    {
     mg = PrinterUnitConvert.Convert(mg, PrinterUnit.Display, PrinterUnit.TenthsOfAMillimeter);
    }

//备份打印文档的DefaultPageSettings,因为转换后会改变,而设置对话框单击取消按钮后不还原就不能正确显示原来的值
    PageSettings psPrintDocumentBack = (PageSettings)(printDocument.DefaultPageSettings.Clone());

psDlg.PageSettings = psPrintDocumentBack;//printDocument.DefaultPageSettings; //用printDocument的时取消了对话框就要还原
    psDlg.PageSettings.Margins = mg;

//显示对话框
    DialogResult result = psDlg.ShowDialog();
    if (result == DialogResult.OK)
    {
     ps = psDlg.PageSettings;
     printDocument.DefaultPageSettings = psDlg.PageSettings;
    }
    else
    {
    
    }

}
            catch(System.Drawing.Printing.InvalidPrinterException e)
            {
                ShowInvalidPrinterException(e);
            }
            catch(Exception ex)
            {
                ShowPrinterException(ex);
            }
            finally
   {
    psDlg.Dispose();
    psDlg = null;
   }

return ps;
  }
  #endregion

至此,关于打印页面设置对话框值老是变化的问题已得到解决。在接下来(下篇)的文章中,我们一起来解决自定义纸张的问题,看看至少不用API能不能实现自下定义纸张和连续走纸?

本文全部源码及各种打印免费下载请访问我在CSDN上的Blog:
http://blog.csdn.net/flygoldfish

声明:本文版权为周方勇所有,如需转载,请保留完整的内容及出处。

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=595068
[点击此处收藏本文]   发表于 2006年02月09日 11:14 AM

长江支流 发表于2006-02-09 11:42 AM  IP: 211.100.21.*
TrackBack来自《开源:VS.NET打印页面设置(PageSetupDialog)值老是变、自定义纸张和连续走纸的问题及解决源码(二)》:

到网上一搜,有很多关于打印页面设置值怎么老是变、自定义纸张和连续走纸的问题。有很多说法,有些说是VS.NET的bug,有的说必须用API,还有的说...
其实,是我们自己没有研究透,这里给一些解决办法。

转载于:https://www.cnblogs.com/smallsoftfox/archive/2012/06/27/2566482.html

NET环境下有关打印页面设置、打印机设置、打印预览对话框的实现-相关推荐

  1. .Net环境下有关打印页面设置、打印机设置、打印预览对话框的实现(开源)---转

    作者:周方勇 我个人认为,开发MIS,首先就得解决网格的问题,而开发工具为我们提供了如DataGrid.MSHFlexGrid的控件.其次,是打印的问题,将业务单据与数据报表打印出来.可想而知,即使一 ...

  2. IIS7环境下支持mp4视频随意拖动和预览,WIN2008以上,边播放边下载

    功能介绍:支持MP4视频任意拖动(即拖动进度到没有下载的部分直接可以播放),支持MP4视频边下载边播放 适用于服务windows系统 IIS7以及更高 1.下载IIS专用的DLL扩展模块. iis7: ...

  3. .NET环境下有关打印页面设置、打印机设置、打印预览对话框的实现

    原文:.NET环境下有关打印页面设置.打印机设置.打印预览对话框的实现 我个人认为,开发MIS,首先就得解决网格的问题,而开发工具为我们提供了如DataGrid.MSHFlexGrid的控件.其次,是 ...

  4. .NET环境下有关打印页面设置、打印机设置、打印预览对话框的实现与应用(1)

    From: http://blog.csdn.net/flygoldfish/article/details/77208 .NET环境下有关打印页面设置.打印机设置.打印预览对话框的实现 我个人认为, ...

  5. 标签打印软件如何设置打印区域

    在平时使用的office软件中打印时,需要设置打印区域或者调整打印区域,那么在使用标签打印软件时,同样是需要设置打印区域的,尤其是对于那种有衬纸的标签纸,为了保证标签内容可以准确打印到标签纸上,需要根 ...

  6. CAD图纸打印,怎样设置打印呢?

    很多小伙伴们都会在CAD制图过程中遇到各种不同的问题.其中就有,CAD图纸打印,怎样设置打印问题?今天我就和小伙伴们分享一下CAD图纸打印,怎样设置打印的具体操作方法.使用CAD看图软件进行CAD图纸 ...

  7. 【web小票打印】谷歌浏览器跳过预览直接打印(lodop)

    因项目需求,需要在网页端直接打印订单小票,然后客户给寄了一台得力热敏票据打印机.lowlowlow,人家都是什么云打印了.... 上产品官网溜达了一圈啥也没给,就给了驱动安装.装完在打印的时候选择该打 ...

  8. 【Android RTMP】Android Camera 视频数据采集预览 ( 视频采集相关概念 | 摄像头预览参数设置 | 摄像头预览数据回调接口 )

    文章目录 安卓直播推流专栏博客总结 一. Android 端数据采集涉及到的相关概念 二. Camera 预览图像尺寸设置 三. 获取摄像头采集的数据格式 安卓直播推流专栏博客总结 Android R ...

  9. iPhone App创建与审核步骤二:如何在developer.apple.com网站中设置App预览和截屏以完成App上架

    iPhone App创建与审核步骤二:如何在developer.apple.com网站中设置App预览和截屏以完成App上架,根据图标规范RAD Studio 10.4 for delphi XE 或 ...

最新文章

  1. 阿里云 物联网产品架构
  2. 二级c语言需要知道的知识点,2020年全国计算机二级C语言复习知识点:C语言基本知识(...
  3. ExtJs 备忘录(1)—— Form表单(一) [ 控件使用 ]
  4. 从此,懂一点CDMA
  5. c++指针详解_c语言详解sizeof
  6. 【codevs1282】约瑟夫问题
  7. 应用联合服务 云计算拉近应用和操作距离
  8. L1-031 到底是不是太胖了 (10 分)—团体程序设计天梯赛
  9. 利用react native创建一个天气APP
  10. RABBITMQ集群及HA、LB
  11. julia集 matlab代码,Julia集分形
  12. 打开微信开发者工具后无法显示文件的问题解决方案
  13. 基于java体育竞赛成绩管理系统(Java毕业设计)
  14. DXC Technology和Google Cloud宣布缔结全球合作关系,共同推动企业大规模创新
  15. 李开复:微创新改变中国互联网
  16. 判断浏览器是pc端还是手机端
  17. SpringBoot后台权限管理系统(三)—权限模块
  18. abaqus如何并行计算_ABAQUS加速计算的小技巧
  19. 考研农业工程与信息技术(计算机方向)
  20. 【省内训练2018-11-23】Bishop

热门文章

  1. mybatis update 返回值
  2. leetcode记录-回文数
  3. HashSet存储元素保证唯一性的代码及图解
  4. vmware虚拟机配置串口
  5. 《ANTLR 4权威指南 》一导读
  6. 高级语言程序设计II 实验报告三c++使用文本文件和二进制文件的读写比较两者的区别和优劣...
  7. 手把手教你制作easyUI+bootstrap工作站,主要学习tabs方法
  8. [转载]多维数组与Json格式的转化
  9. HDU-时间挑战 树状数组
  10. 软件更新 正在连接至服务器,正在联系iphone软件更新服务器【操作指南】