C# 如何设置打印纸张的类型

photoplan 2007-09-08 09:50:37
想在程序里设置纸张的类型,比如设成 A4 或 B5,
PrintDocument.PrinterSettings.DefaultPageSettings.PaperSize.Kind
这个属性是纸张的类型,但是它是只读的,应该怎么办?
...全文
324 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
photoplan 2007-09-08
  • 打赏
  • 举报
回复
printDocument.DefaultPageSettings.PaperSize= new System.Drawing.Printing.PaperSize("PaperA4",840,1180);

这个是自己设置了纸张尺寸,我想用个现成的,不用自己写尺寸,可以么
孟子E章 2007-09-08
  • 打赏
  • 举报
回复
printDocument.DefaultPageSettings.PaperSize= new System.Drawing.Printing.PaperSize("PaperA4",840,1180);
本DataGridView打印控件和.NET轻松打印控件5.0版(含报表模板设计组件)2012年5月12日修改完成,完全免费,在.NET2.0及以上环境下都可以使用(VB、C#等都可以用),有帮助文档与使用实例。 与4.95版相比,控件5.0版的主要更改如下: 1、解决了生成预览及打印过程中的状态窗口中显示的“第 页共 页”问题,现在可以正确显示总页数。 2、增加了打印DataGridView中选定内容(选定行、列或矩形区域)的功能。对DGVPrint组件,设置PrintRange属性为相应的值即可,而对于VB2008Print组件,请先用CopyDataGridViewSelectedRange函数将要打印的DGV复制到新的DGV,然后再用PrintDGV函数打印这个新DGV即可。 3、增加了大量的绘图函数(如路径、多边形、填充多边形、曲线等),基本上.NET的GDI+绘图函数都有了(注意,填充类绘图函数名称为DrawFill……,而不是GDI+的Fill…。另外,对于Brush参数,只支持SolidBrush、TextureBrush、LinearGradientBrush三种类型的画刷,而且对于后2个画刷,只支持其中的主要属性。 4、增加了直接打印Panel、GroupBox等容器控件中的内容的DrawPanel函数(对容器中的TextBox控件与Label控件以文本的形式打印,除此之外的其他除容器控件之外的控件如CheckBox、ComboBox、Button控件等则直接以图片的形式打印,函数还支持嵌套容器控件的打印,且如果一页打印不下具有自动换页续打功能)。借助该函数的功能,您可以在Panel等容器控件中设计好要打印的内容及打印相对位置,控件轻松帮助您解决打印问题。(参见演示实例) 5、增加了报表文件及模板文件的自动关联功能。在运行了“打印控件安装.msi”文件安装了打印控件的前提下,双击报表文件(扩展名为you的文件)即可打印预览该报表的内容;双击报表模板文件(扩展名为mb的文件)即可进入报表模板修改界面(此时如果打印预览报表模板不会有数据,因为这样修改报表模板时是没有设置数据源的)。 6、解决了原EasyReport报表组件由于资源释放不及时,在多次重复使用时占用大量句柄而可能产生的不能打印或预览问题。 7、解决了DataGridView在有固定列(冻结列)的时候,有些情况下(DGV固定列的index与DisplayIndex不一致时)打印可能出错的问题。 8、DGVPrint组件的自定义纸张使用更方便,设计时在可以通过设置PaperHeight与PaperWidth属性设置,运行时在“打印参数”设置窗口中也可设置自定义纸张大小。 9、解决了EasyReport组件“页表头”区域设置的背景图片覆盖该区域打印内容的问题。 10、增加了打印XML格式的HTML文档的功能(目前只支持部分HTML标记,不支持表格及图片等标记,请参见DrawXML函数) 11、对帮助文件做了进一步的修订 12、增加了很多新的演示实例。 13、其他一些完善和修改。 本控件特色: 1、强大的DataGridView打印功能,不仅可以以多种形式(普通打印、分栏打印、跨页打印、工资条打印)打印DataGridView表格,基本上能完全按DataGridView控件本身设置的格式如字体、字号、背景颜色、前景颜色、单元格对齐方式等打印出来,文字图像都可以打印,而且是完全根据表格当前的显示顺序进行打印的,如果您在使用时调整了列的顺序,刷新打印后就会按调整后的列显示顺序进行打印,基本上做到了所见即所得的打印。 2、报表设计功能,这是4.7版控件的新增功能。报表模板设计组件EasyReport与WebEasyReport组件可以设计普通报表、分组报表、套打模板等,分别以DataGridView和GridView为数据源。控件的位置以毫米为计量单位,定位准确,很适合套打单据设计。 3、分组汇总打印DataGridVeiw功能,每组还可以自动换新页打印,还可以自动增加行号。 4、强大的文本打印输出功能,有多个文本打印重载函数,打印文本时,如果需要,控件会自动换行或换页打印输出。 5、支持同一文档多种版面格式打印(类似于Word中的节的功能):对同一份文档,不同的页面可以设置不同的格式(纸张大小、纸张方向、页边距),只需要在新增一页时在NewPage方法中指定要使用的页面格式即可,使用非常简单。 6、报表文件保存功能。本控件允许将当前打印预览的内容保存为报表文件,以后使用本控件重新打开该报表文件即可重现原来保存报表时的打印内容。 7、打印方案保存与读取功能。可以将当前打印参数保存为打印方案文件,或都从保存的打印方案文件中读取打印参数。 8、水印
应广大Q友来信息要求,重发此源码。 此源码包括CSharp、VB.net代码示例。 Gscr.Report控件(广源报表控件)实现报表自由定义,报表显示、打印预览、打印、公式、排序、导出等报表常见功能,是一款较好报表控件。 ------以下是引用官方部分简介------ Gscr.Report控件(广源报表控件)是专为.NET For Windows Forms编程者开发的报表平台,具有功能实用、操作简捷的特点。 欢迎你来交流,和提建议。QQ:1271180210 1.采用行列式二维表格,能够灵活设定单元格属性,操作方式和Excel很相似; a.单元格宽度和高度、背景色、前景色、显示格式、格线设置等; b.字体类型、字体大小、字体粗细、斜体及下划线设置等; c.数据水平对齐、垂直对齐设置等; d.合并单元格功能; 2.友好的表格设计器界面,可以让报表设计工作变得轻松。您可以使用它来制作表格模板,然后将表格保存为.gsc文件。 3.支持数据绑定。用户只需提供一个DataTable对象,因此报表支持目前流行的各种数据库格式,比如SQL Server、Oracle、Access等常用数据库格式。 另外,用户也通过赋值报表的SelectSQL属性(设置针对SQL作为 Gscr.Report 数据源运行的SQL文本命令)来实现数据绑定。 4.可以按照打印效果的需要进行灵活的设置,包括页边距、纸张大小,页眉页脚、打印方向、表格线是否打印、背景是否打印等。 同时,支持表格套打,用户可以对每个单元格的背景颜色、内容、边线等是否打印进行灵活控制。 5.提供丰富的单元格数据类型(或编辑方式):编辑框、下拉列表框、下拉表格、复选框、日期选择框、货币输入框、按钮、进度条、密码等。 6.行列的添加/删除,显示/隐藏、拖动、排序、锁定行列等功能 7.对创建的报表支持包括xls、txt、csv、xml等多种导出文件格式, 同时支持资源本地化。 8 支持单元格公式运算。公式表达式中可以进行算术、关系、逻辑等各种运算,支持对参数、变量、字段及单元格的引用。 同时,提供丰富的内建函数,包括统计函数、数学函数、日期时间函数、字符串函数及各种特殊处理函数(如金额大写)等。 9.界面美观、大方。
姓 名: 周方勇 网 名: 长江支流/咏方舟 Email: flygoldfish@sina.com.cn Blog: http://blog.csdn.net/flygoldfish 2004年04月18日 1、在网友的热心支持下免费提供空间和域名 www.webmis.com.cn 2004年04月07日 发布不带.dll的源码供交流 2005年01月24日 1、提供VB.NET及C#的使用示例工程 2、发布V2.2测试版 2005年01月22日 将打印示例程序按功能(简单打印、完整示例、Excel打印)分在不同的窗口 2005年01月14日 发布《MIS金质打印通》 V2.1测试版 2004年01月13日 1、将MisPrinter类改为MisGoldPrinter,以促进品牌效应。 2、在MisGoldPrinter类中再增加一个带参构造函数,以便直接默认横向打印/预览 3、增加DocumentName属性,以便在打印/预览时在窗口标题栏中显示指定的名称 2004年01月07日 调整打印程序内部结构,为使发出去的后期源程序版本一致,待近期调整完结构之后公布源码! 这就是继V1.1之后没有发源代码的原因。 ____________________________________________________ 2004年7月 完成了整体的框架、涉及打印的几个对话框、核心打印程序及几个基本打印对象并由BillPrinter类将其组织起来,程序基本定型。 本程序为通用打印程序,单据、会计凭证、发票清单、报表、任意复杂表格、合并表格如工矿企业合同都可以由系统提供的几个默 认打印对象组合打印。 DataGrid、DataTable、MSHFlexGrid等二维形式全部可以打印。 部分对象如PrinterMargins、Sewing、GridLineFlag、GridMergeFlag等提供图例,以促进理解。 后期版本将提供XML描述、SQL数据源的打印,并用管理器管理任意多个网格、文本对象、图象等,用户可以随意定义。 2004年8月初 为一些类或程序写上注释,如下: /// 程序提供:周方勇;Email:flygoldfish@sina.com。 /// 请 关 注:WebMIS.Net快速开发工具,不写一行程序开发B/S架构下MIS、OA、CRM、人事管理、档案管理等数据库网页系统。简单、实用、稳定、可靠。 /// 下 载: /// 上海奥联:WWW.AlinkSoft.COM /// 用友华表:WWW.CellSoft.CC ///★★★★★您可以免费使用此程序,但是请您保留此说明,以维护知识产权★★★★★ 2004年08月07日 1、将框架作了部分调整,并且将打印基本对象的基类Printer作了调整。 由于打印对象的定位及打印区域受PrintDocument、Sewing影响,为了方便Printer的子类不必在每次实例化后设置这 两个对象,故将PrintDocument、Sewing放在一个类中作为全局静态变量,现删除这两个全局静态变量, 改在Printer 的构造函数中,为每个子类提供一个默认的PrintDocument、Sewing实例对象。 2、为GridBase扩充了几个属性与方法,由于字段太多,每次增加或修改字段后要去构造函数中去修改他们的初始化, 太麻烦了,所以将它们的初始化直接放在定义处,并把相应的属性及相关方法直接放在字段后,并用#region指令将 它们折叠起来,便于维护。 3、增加了ReDimArrString(string[,] arrStr,int rows,int cols),即重定义二维字符数组,因为网格的行列数可能要改 变,但不能因为它们改变了而丢失原有的数据,因此写此程序保留新定义的行列,但保留和原有行列数相交的部分数据。 4、应用设计模式原理重新组织IPrinterPageSetting、PrinterPageSetting、WinPrinterPageSetting、WebPrinterPageSetting。 WebPrinterPageSetting待进一步完善。 2004年08月08日 1、将以往程序优化 2、将DrawGrid类中DrawGridLine(...)、DrawGridText(...)、DrawGridBorder(...)参数最全的核心函数改为protected,提供public的 无参方法供实例化对象调用; 由于在指定的区域内可能绘制不完网格,因此上面的几个函数可能会将返回类型void改为一个描述绘制结果的对象; SetText(int row,int col,string text)、SetText(int row,int col)将在后期版本中提供.Row[index].Text的属性; TransGrid()、ResetTransGrid()是在设计时为了能做任意的缩放的变换提供的,待进一步完善。 3、对Printer类中的ReSetVariableVal()、GetPrinterMargins()进行修改,以适应对纸张进行调整特别是横向、竖向打印的支持。 2004年08月09日 1、解决分页问题,主要是有些对象每页都重复打印,使得条件复杂。 2004年08月10日 1、13:42将源程序传给资深程序员李峰; 2、计划增加每页小计。 2004年08月11日 1、为网格增加画对角线的功能,以满足中国人表格的特点; 2、将Graphics、PrintDocument、Sewing、RectangleF、Height、Draw()重新组织在IDraw里,并在 BillPrinter中增加private void OutObject(IDraw outer),使每个对象输出时调用此方法,提高代码重用率; 2004年08月14日 1、忘了,反正又把程序看了看,修修补补做了些调整。 2004年08月15日 1、将分页又重新简化了一下,主要是打印Body上用了数据行指针; 2004年08月16日 1、发布V1.0源码版,程序名称为MIS金质打印王。 2、在CSDN上发布贴子: .^^.开源:C#.NET开发的MIS打印程序,各种网格如DataGrid打印、DataTable、HtmlTable等二维形式全搞定,源码免费下载 http://community.csdn.net/Expert/topic/3278/3278050.xml?temp=.5012934 2004年08月17日 1、在CSDN上发布文章: 开源:.NET环境下有关打印页面设置、打印机设置、打印预览对话框的实现 http://blog.csdn.net/flygoldfish/archive/2004/08/17/77208.aspx 2、应广大网友来信要求,计划将PrinterPageSetting目录开源到演示程序,以后逐一以文章的形式全部开放。 2004年08月18日 1、中国共享软件网收录 MIS金质打印王 V1.0源码版 http://www.shareware.cn/pub/2319.html 2、将PrinterPageSetting目录即(页面设置、打印机设置、打印预览)源码加入演示程序。 3、在MisGoldPrinter中添加属性,DataSource,这样,仅需几句话就可以打印了,如: MisGoldPrinter webmis = new MisGoldPrinter(); //申明并实例化打印组件 webmis.Title = "WebMIS.Net快速开发工具\nWWW.AlinkSoft.COM"; //网格标题 webmis.DataSource = this.dataGrid1; //DataGrid作为数据源 webmis.Preview(); //打印预览 注意:将将MisGoldPrinter中的Draw(Graphics g)打印各个对象时加一下 printerobject != null的判断,如 if (mCurrentPageIndex == 1 || _caption.IsDrawAllPage)... 改为 if (_caption != null && (mCurrentPageIndex == 1 || _caption.IsDrawAllPage))... 否则可能会出错。 4、将3的应用加到了frmPrint.cs ,做一个简单的打印。 2004年08月19日 1、将PrinterPageSetting目录即(页面设置、打印机设置、打印预览)源码加入演示程序。 2、发布V1.1源码版,程序名称为MIS金质打印王。 2004年09月03日 1、由于在CSDN上发表文档".NET环境下有关打印页面设置、打印机设置、打印预览对话框的实现", 因此将PrinterPageSetting封装成一个.dll,分别用C#与VB.net写了使用示例工程程序 2、在IPrinterPageSetting.cs增加event PrintPageDelegate PrintPage,并将原PrintPage改为PrintPageValue /// C#调用: /// PrinterPageSetting1.PrintPageValue = new PrintPageDelegate(this.PrintPageEventHandler); ///或 PrinterPageSetting1.PrintPage += new PrintPageDelegate(this.PrintPageEventHandler); /// VB调用: /// Me.printerPageSetting.PrintPageValue = New GoldPrinter.PrintPageDelegate(AddressOf printDocument_PrintPage) 3、增加了DrawText类,用以打印文档(其实可以用一行一列的DrawGrid打印) 4、PrinterPageSetting的readme.txt如下: ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ 声明: 1、版权归周方勇所有,如需传播,请保留完整的内容及此声明,以维护知识产权! 2、您可以使用本程序中的任何部分作为学习或商业用途,但是需要保留相关程序的注释。 3、最新版本下载:http://www.alinksoft.com 4、免费源码 5、本人不承担任何责任。 周方勇;Email:flygoldfish@sina.com。 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ 本程序带C#与VB.net版本使用方式,用VS.net打开PrinterPageSetting.sln, 在您喜欢的语言项目上单击鼠标右键,在弹出的菜单中选择"设为启动项目",然后运行。 5、准备独立发布PrinterPageSetting 2004年09月04日 重大喜讯:收到中国共享软件注册中心2004年09月03日的邮件。部分内容如下: 软件名称:MISGoldPrinter免费C#.NET源码版(5块钱给softreg吧) 注册价格:5元/套 您的软件在本站的编号是: /535AC7A1-9985-4314-A52C-978BB9C0BB29/ 软件注册页绝对链接: http://www.softreg.com.cn/shareware_view.asp?id=/535AC7A1-9985-4314-A52C-978BB9C0BB29/ 快捷链接: http://www.softreg.com.cn/shareware.asp?id=17260 2004年10月...日 改变PrintDocument的DefaultPageSettings就会改变PrinterMargins。由于是打印基类,继承者博多,因此 每次实例化时都会计算PrinterMargins会影响效率,这就是前些版本速度慢的原因。改为手动调用CalculatePageInfo()或改变 PrintDocument后在调用处重新计算一个PrinterMargins保存起来,因此增加PrinterSingleton, 使系统只有同一个PrintDocument及PrinterMargins,这样速度大大改观。 开发Excel打印功能 2004年11月20日 开发Excel打印功能完成,能够生成Excel文件、Excel打印预览、Excel操作。 自定制模板打印,非常灵活。完成各种打印、套打、报表、图表分析。 2004年11月23日 发布MIS金质打印王 V2.0测试版。如需要源码,下载V1.1即可。 V2.0源码版在预计在12月上旬推出。 2004年11月27日 改正预览时显示正确,在预览窗口单击打印时打印不出Body的错误。 其实只要在PrintPageEventHandler()中打印或预览重置当前页及当前行 this.mCurrentPageIndex = 1; this.mCurrentRowIndex = 0; 2004年12月...日 1、调整打印程序内部结构,公开部分程序基本没动,只作相应的错误更正及加几个属性。 2、PrinterBase不再包含装订线Sewing,打印对象的定位及打印区域只受PrintDocument的影响, 3、由于使用PrinterSingleton使系统只有同一个PrintDocument及PrinterMargins,因此在同一系统 两个地方使用时出现了打印一样的效果,如A处有header而B处没有,先打A再打B,结果B中也有header了, 于是在PrinterSingleton增加Reset()方法以使PrintDocument及PrinterMargins为null,在MisPrinter 构造函数中首先调用Reset()

110,550

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧