NET环境下有关打印页面设置、打印机设置、打印预览对话框的实现-
到网上一搜,有很多关于打印页面设置值怎么老是变、自定义纸张和连续走纸的问题。有很多说法,有些说是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环境下有关打印页面设置、打印机设置、打印预览对话框的实现-相关推荐
- .Net环境下有关打印页面设置、打印机设置、打印预览对话框的实现(开源)---转
作者:周方勇 我个人认为,开发MIS,首先就得解决网格的问题,而开发工具为我们提供了如DataGrid.MSHFlexGrid的控件.其次,是打印的问题,将业务单据与数据报表打印出来.可想而知,即使一 ...
- IIS7环境下支持mp4视频随意拖动和预览,WIN2008以上,边播放边下载
功能介绍:支持MP4视频任意拖动(即拖动进度到没有下载的部分直接可以播放),支持MP4视频边下载边播放 适用于服务windows系统 IIS7以及更高 1.下载IIS专用的DLL扩展模块. iis7: ...
- .NET环境下有关打印页面设置、打印机设置、打印预览对话框的实现
原文:.NET环境下有关打印页面设置.打印机设置.打印预览对话框的实现 我个人认为,开发MIS,首先就得解决网格的问题,而开发工具为我们提供了如DataGrid.MSHFlexGrid的控件.其次,是 ...
- .NET环境下有关打印页面设置、打印机设置、打印预览对话框的实现与应用(1)
From: http://blog.csdn.net/flygoldfish/article/details/77208 .NET环境下有关打印页面设置.打印机设置.打印预览对话框的实现 我个人认为, ...
- 标签打印软件如何设置打印区域
在平时使用的office软件中打印时,需要设置打印区域或者调整打印区域,那么在使用标签打印软件时,同样是需要设置打印区域的,尤其是对于那种有衬纸的标签纸,为了保证标签内容可以准确打印到标签纸上,需要根 ...
- CAD图纸打印,怎样设置打印呢?
很多小伙伴们都会在CAD制图过程中遇到各种不同的问题.其中就有,CAD图纸打印,怎样设置打印问题?今天我就和小伙伴们分享一下CAD图纸打印,怎样设置打印的具体操作方法.使用CAD看图软件进行CAD图纸 ...
- 【web小票打印】谷歌浏览器跳过预览直接打印(lodop)
因项目需求,需要在网页端直接打印订单小票,然后客户给寄了一台得力热敏票据打印机.lowlowlow,人家都是什么云打印了.... 上产品官网溜达了一圈啥也没给,就给了驱动安装.装完在打印的时候选择该打 ...
- 【Android RTMP】Android Camera 视频数据采集预览 ( 视频采集相关概念 | 摄像头预览参数设置 | 摄像头预览数据回调接口 )
文章目录 安卓直播推流专栏博客总结 一. Android 端数据采集涉及到的相关概念 二. Camera 预览图像尺寸设置 三. 获取摄像头采集的数据格式 安卓直播推流专栏博客总结 Android R ...
- iPhone App创建与审核步骤二:如何在developer.apple.com网站中设置App预览和截屏以完成App上架
iPhone App创建与审核步骤二:如何在developer.apple.com网站中设置App预览和截屏以完成App上架,根据图标规范RAD Studio 10.4 for delphi XE 或 ...
最新文章
- 阿里云 物联网产品架构
- 二级c语言需要知道的知识点,2020年全国计算机二级C语言复习知识点:C语言基本知识(...
- ExtJs 备忘录(1)—— Form表单(一) [ 控件使用 ]
- 从此,懂一点CDMA
- c++指针详解_c语言详解sizeof
- 【codevs1282】约瑟夫问题
- 应用联合服务 云计算拉近应用和操作距离
- L1-031 到底是不是太胖了 (10 分)—团体程序设计天梯赛
- 利用react native创建一个天气APP
- RABBITMQ集群及HA、LB
- julia集 matlab代码,Julia集分形
- 打开微信开发者工具后无法显示文件的问题解决方案
- 基于java体育竞赛成绩管理系统(Java毕业设计)
- DXC Technology和Google Cloud宣布缔结全球合作关系,共同推动企业大规模创新
- 李开复:微创新改变中国互联网
- 判断浏览器是pc端还是手机端
- SpringBoot后台权限管理系统(三)—权限模块
- abaqus如何并行计算_ABAQUS加速计算的小技巧
- 考研农业工程与信息技术(计算机方向)
- 【省内训练2018-11-23】Bishop