900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > NET环境下有关打印页面设置 打印机设置 打印预览对话框的实现-

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

时间:2022-06-29 09:27:09

相关推荐

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

到网上一搜,有很多关于打印页面设置值怎么老是变、自定义纸张和连续走纸的问题。有很多说法,有些说是的bug,有的说必须用API,还有的说...

其实,是我们自己没有研究透,这里给一些解决办法。

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

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

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

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

/flygoldfish/archive//09/06/95685.aspx

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

#region 页面设置对话框 protected virtual PageSettings ShowPageSetupDialog(PrintDocument printDocument)

///

/// 页面设置对话框,可以独立使用

///

///

///

///

/// 作 者:周方勇

/// 修改日期:-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:

/flygoldfish

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

Trackback: http://tb./TrackBack.aspx?PostId=595068

[点击此处收藏本文] 发表于 02月09日 11:14 AM

长江支流 发表于-02-09 11:42 AM IP: 211.100.21.*

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

到网上一搜,有很多关于打印页面设置值怎么老是变、自定义纸张和连续走纸的问题。有很多说法,有些说是的bug,有的说必须用API,还有的说...

其实,是我们自己没有研究透,这里给一些解决办法。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。