Spread for Windows Forms高级主题(7)---自定义打印的外观

简介:

表单打印的多个部分都可以进行自定义,大多数的自定义选项存在于PrintInfo对象中。大多数打印选项是在PrintInfo对象上进行设置,并在表单级别上应用。当你执行打印操作时,你将一个特定的表单发送给使用这些设置的打印机。如果你想为不同的表单使用不同的打印设置,那么你可能需要重置PrintInfo对象,然后在表单打印的间隔内做必要的修改。

深入理解打印选项

你可以通过设置PrintInfo对象的 属性,并将表单的PrintInfo属性值设置为该对象,来自定义打印设置。PrintInfo对象提供了以下属性用来自定义打印:

属性

描述

AbortMessage

获取或设置退出对话框显示的信息。

BestFitCols

获取或设置列宽是否为满足打印最长字符串的宽度而调整。

BestFitRows

获取或设置行高是否为满足打印最高字符串的高度而调整。

Centering

获取或设置打印输出是否居中。

Colors

获取或设置可在自定义页眉或页脚文本中使用的颜色列表。

ColStart和 ColEnd

用来打印表单的一部分。

FirstPageNumber

获取或设置打印在首页上的页码。

Footer

为打印页面提供页脚。

Header

为打印的页面提供页眉。

Images

获取或设置可在自定义页眉或页脚中使用的图片列表。

JobName

获取或设置打印作业的名称。

Margin

获取或设置打印的页面空白。

Opacity

获取或设置打印表单时所使用的不透明度; 它可以用来首先打印一个水印,然后再打印表单的内容。

Orientation

获取或设置打印时的页面方向。

PageStart和 PageEnd

用来打印一个页面区域。

PageOrder

获取或设置页面打印的顺序。

PaperSize

获取或设置所使用的纸张大小。

PaperSource

获取或设置所使用的纸张来源。

Preview

用来提供打印预览。

Printer

获取或设置用来打印的打印机名称。

PrintNotes

获取或设置是否打印单元格注释。

PrintShapes

获取或设置是否打印浮动对象。

PrintType

获取或设置需要打印的内容。

RepeatColStart和 RepeatColEnd

获取或设置是否在每一个页面上打印相同的列集。

RepeatRowStart 和 RepeatRowEnd

获取或设置是否在每一个页面上打印相同的行集。

RowStart和 RowEnd

用来打印表单的一部分。

ShowBorder

获取或设置是否在表单的四周打印边界。

ShowColor

获取或设置是否打印在屏幕上出现的颜色。

ShowColumnHeader 和 ShowRowHeader

获取或设置是否打印列标题和行标题。

ShowGrid

获取或设置是否打印表单的网格线。

ShowPrintDialog

获取或设置打印前是否显示打印对话框。

ShowShadows

获取或设置是否打印标题阴影。

SmartPrintPagesTall

获取或设置打印的页高。

SmartPrintPagesWide

获取或设置打印的页宽。

SmartPrintRules

用来设置打印优化的规则。

UseMax

获取或设置是否只打印包含数据的行。

UseSmartPrint

用来开启打印优化的规则。

ZoomFactor

获取或设置打印页面时使用的缩放因子。

示例代码创建了一个PrintInfo对象,并设置属性指定不打印网格线或行标题,并且只打印包含数据的单元格。

 


 
 
  1. //创建PrintInfo对象并设置属性。  
  2. FarPoint.Win.Spread.PrintInfo printset = new FarPoint.Win.Spread.PrintInfo();  
  3. printset.ShowGrid = false;  
  4. printset.ShowRowHeader = FarPoint.Win.Spread.PrintHeader.Hide;  
  5. printset.UseMax = true;  
  6. //为第一个表单设置PrintInfo属性。 fpSpread1.Sheets[0].PrintInfo = printset;  
  7. //打印表单。  
  8. fpSpread1.PrintSheet(0); 

 

自定义打印作业设置

如果你没有指定其他打印机的话,表单会使用你的Windows系统环境中当前的默认打印机进行打印。你可以在任意支持Windows的打印机上打印表单。

你可以自定义的打印作业设置项包括打印机、纸张来源、以及纸张大小。相对应的,可以设置PrintInfo对象中的Printer,PaperSource,或PaperSize属性。

下面的示例代码从一个复选框中选择了纸张来源,并在打印所有表单前设置了纸张的大小。

 


 
 
  1. private void Form1_Load(object sender, System.EventArgs e) {  
  2. int i;  
  3. System.Drawing.Printing.PrinterSettings ps = new System.Drawing.Printing.PrinterSettings();  
  4. for (i = 0; i <= ps.PaperSources.Count - 1; i++)  
  5. {  
  6. comboBox1.Items.Add(ps.PaperSources[i].SourceName);  
  7. }  
  8. comboBox1.Text = ps.PaperSources[0].SourceName;  
  9. }  
  10.  
  11. private void button1_Click(object sender, System.EventArgs e)  
  12. {  
  13. FarPoint.Win.Spread.PrintInfo pi = new FarPoint.Win.Spread.PrintInfo();  
  14. System.Drawing.Printing.PrinterSettings ps = new System.Drawing.Printing.PrinterSettings();  
  15. pi.PaperSize = new System.Drawing.Printing.PaperSize("Letter", 600, 300);  
  16. pi.PaperSource = ps.PaperSources[comboBox1.SelectedIndex];  
  17. fpSpread1.Sheets[0].PrintInfo = pi;  
  18. fpSpread1.PrintSheet(-1);  

自定义打印页眉或页脚

你可以在打印页面上显示页眉和页脚。使用PrintInfo类的 Header属性和 Footer属性,可能包含特殊的控制指令,你可以指定文本和变量,如页数,也可以指定字体的设置。与字体相关的指令以"f"开头。

下面的表中列出了可插入到页眉和页脚中的控制指令。

控制字符

完整的命令

打印页面的页眉或页脚的行为

/

/

插入正斜杠字符(/)

/c

/c

调整项目居中

/cl

/cl"n"

设置文本的字体颜色,使用以0为基准的颜色索引,n,在引号中(n可以是0或更大); 请参考Colors属性。

/dl

/dl

使用长格式,插入日期

/ds

/ds

使用短格式,插入日期

/f

/f"n"

重新调用先前保存的字体设置(查看表中的/fs),使用以0为基准的索引,n,在引号中(n可以是0或更大)。

/fb

/fb0

关闭加粗字体类型

 

/fb1

打开加粗字体类型

/fi

/fi0

关闭斜体字体类型

 

/fi1

打开斜体字体类型

/fk

/fk0

关闭删除线

 

/fk1

打开删除线

/fn

/fn"name"

使用引号中字体的名称,设置字体的名称。

/fs

/fs"n"

保存字体设置以便重复使用,使用以0为基准的字体设置索引,n,在引号中(查看表中的/f)

/fu

/fu0

关闭下划线

 

/fu1

打开下划线

/fz

/fz"n"

设置字体的大小

/g

/g"n"

插入一张图形(图片),以0为基准的图片索引,n,在引号中(n可以为0或更大) 请参考Images属性。

/l

/l

左对齐该项目(这是字母l或L,与Left等价)

/n

/n

插入一个新行

/p

/p

插入页码

/pc

/pc

插入页数(打印作业中的总页面数)

/r

/r

右对齐该项目

/tl

/tl

使用长格式插入时间

/ts

/ts

使用短格式插入时间

如果你使用了多个控制字符,不要在字符之间留空格。字符可以为小写或大写格式; 为了简单起见,显示在这里的所有命令和示例都使用小写格式。

打印表单(运行PrintSheet 方法)前定义页眉和页脚(设置 Header 和 Footer 属性)。

如果颜色已经在Colors属性中进行了预定义,那么你可以从颜色列表中为文本指定一个颜色。

如果图片已经在Images属性中进行了预定义,你可以指定一个图片。

你可以添加文本包括页数和总的打印页数。

你可以保存页眉或页脚中的字体设置,以便重复使用。

这个是下面代码运行的结果。

image

下面的示例代码打印带有指定页眉和页脚文本的表单:

 


 
 
  1. //创建PrintInfo对象并设置属性。  
  2. FarPoint.Win.Spread.PrintInfo printset = new FarPoint.Win.Spread.PrintInfo();  
  3. printset.Colors = new Color[] {Color.Green, Color.Yellow, Color.Gold, Color.Indigo, Color.Brown};  
  4. printset.Images = new Image[] {Image.FromFile("C:\\images\\point.jpg"), Image.FromFile("C:\\images\\logo.gif"), Image.FromFile("C:\\images\\icon.jpg")};  
  5. printset.Header = ""/fn\"Book Antiqua\" /fz\"14\" Print job for FarPoint Inc./n ";  
  6. printset.Footer = "/g\"1\"/r/cl\"4\"This is page /p of /pc";  
  7. //为第一个表单设置PrintInfo属性。 fpSpread1.Sheets[0].PrintInfo = printset;  
  8. //打印表单。  
  9. fpSpread1.PrintSheet(0); 

在打印页面上循环打印行或列

你可以指定出现在每一个打印页顶部的行或左边的列。使用PrintInfo对象的RepeatRowStart,RepeatRowEnd,RepeatColStart,和RepeatColEnd属性。

下面的示例代码设置了循环选项,并使用了预览对话框。

 


 
 
  1. FarPoint.Win.Spread.PrintInfo printset = new FarPoint.Win.Spread.PrintInfo();  
  2. printset.RepeatColStart = 0;  
  3. printset.RepeatColEnd = 2;  
  4. printset.RepeatRowStart = 0;  
  5. printset.RepeatRowEnd = 2;  
  6. printset.Preview = true;  
  7. fpSpread1.Sheets[0].PrintInfo = printset;  
  8. fpSpread1.PrintSheet(0); 

添加分页符

你可以在指定的行或列前添加强制分页符。分页符不会在屏幕上显示,但是在打印表单时会强制分页。列的分页符位于指定列的左边。行的分页符位于指定行的上方。要添加或设置分页符,使用SetRowPageBreak 和SetColumnPageBreak方法。

你也可以检索到表单中位于分页符后的下一行或列。要查看已经设置的分页符,使用GetRowPageBreaks方法返回行分页符的数量,使用GetColumnPageBreaks方法返回列分页符的数量。

你可以使用GetPrintPageCount方法 计算表单的打印页数。

下面的示例代码设置了行分页符,并为行分页符返回了总行数。

 


 
 
  1. //为窗体的Load事件添加如下代码。  
  2. FarPoint.Win.Spread.PrintInfo pi = new FarPoint.Win.Spread.PrintInfo();  
  3. pi.UseMax =false;  
  4. fpSpread1.Sheets[0].PrintInfo = pi;  
  5. fpSpread1.Sheets[0].SetRowPageBreak(5,true);  
  6. //为按钮的Click事件添加如下代码。  
  7. int []i;  
  8. i = fpSpread1.GetRowPageBreaks(0);  
  9. foreach (object o in i)  
  10. {  
  11. listBox1.Items.Add(o);  

为打印页面添加水印

在打印表单时,你可以打印一张背景图片或水印。打印时,触发PrintBackground事件,然后在该事件中指定背景图片,并使用PrintInfo.Opacity属性设置不透明度; 打印表单时,如果不透明度最高(透明度最低),则没有水印;而如果不透明度低(透明度高)时,则会显示水印。

下面的代码示例展示了如何打印水印。

 


 
 
  1. private void fpSpread1_PrintBackground(object sender, FarPoint.Win.Spread.PrintBackgroundEventArgs e)  
  2. {  
  3. FarPoint.Win.Picture pic = new FarPoint.Win.Picture(System.Drawing.Image.FromFile("C:\\Spread70\\Samples\\Files\\cover.jpg"), FarPoint.Win.RenderStyle.Normal);  
  4. pic.AlignHorz = FarPoint.Win.HorizontalAlignment.Left;  
  5. pic.AlignVert = FarPoint.Win.VerticalAlignment.Top;  
  6. pic.Paint(e.Graphics, e.SheetRectangle);  
  7. }  
  8.  
  9. private void button1_Click(object sender, System.EventArgs e)  
  10. {  
  11. FarPoint.Win.Spread.PrintInfo pi = new FarPoint.Win.Spread.PrintInfo();  
  12. pi.Opacity = 100;  
  13. fpSpread1.ActiveSheet.PrintInfo = pi;  
  14. fpSpread1.PrintSheet(0);  

 本文转自 powertoolsteam 51CTO博客,原文链接:http://blog.51cto.com/powertoolsteam/645955,如需转载请自行联系原作者

相关文章
|
3月前
|
安全 C# 开发者
Windows Forms 应用开发:一分钟浅谈
本文将带领您从零开始,逐步掌握使用 C# 进行 Windows Forms 开发的技巧,包括创建首个应用、处理常见问题及优化方法。首先介绍如何搭建环境并编写基础代码,接着深入探讨控件使用与布局管理,解决控件重叠和响应式布局难题。最后讲解事件处理与多线程技术,确保长时间任务不阻塞界面,并安全更新 UI 状态,助您开发流畅的应用程序。
153 64
|
2月前
|
开发框架 .NET API
Windows Forms应用程序中集成一个ASP.NET API服务
Windows Forms应用程序中集成一个ASP.NET API服务
109 9
|
2月前
|
Windows
.NET 隐藏/自定义windows系统光标
【10月更文挑战第20天】在.NET中,可以使用`Cursor`类来控制光标。要隐藏光标,可将光标设置为`Cursors.None`。此外,还可以通过从文件或资源加载自定义光标来更改光标的样式。例如,在表单加载时设置`this.Cursor = Cursors.None`隐藏光标,或使用`Cursor.FromFile`方法加载自定义光标文件,也可以将光标文件添加到项目资源中并通过资源管理器加载。这些方法适用于整个表单或特定控件。
|
4月前
|
Java 应用服务中间件 Windows
【App Service for Windows】为 App Service 配置自定义 Tomcat 环境
【App Service for Windows】为 App Service 配置自定义 Tomcat 环境
|
4月前
|
PHP 开发工具 git
【Azure 应用服务】在 App Service for Windows 中自定义 PHP 版本的方法
【Azure 应用服务】在 App Service for Windows 中自定义 PHP 版本的方法
|
4月前
|
数据库 Windows
超详细步骤解析:从零开始,手把手教你使用 Visual Studio 打造你的第一个 Windows Forms 应用程序,菜鸟也能轻松上手的编程入门指南来了!
【8月更文挑战第31天】创建你的第一个Windows Forms (WinForms) 应用程序是一个激动人心的过程,尤其适合编程新手。本指南将带你逐步完成一个简单WinForms 应用的开发。首先,在Visual Studio 中创建一个“Windows Forms App (.NET)”项目,命名为“我的第一个WinForms 应用”。接着,在空白窗体中添加一个按钮和一个标签控件,并设置按钮文本为“点击我”。然后,为按钮添加点击事件处理程序`button1_Click`,实现点击按钮后更新标签文本为“你好,你刚刚点击了按钮!”。
330 0
|
4月前
|
安全 Shell Windows
记windows自定义bat脚本自启动
【8月更文挑战第27天】在Windows系统中,可让自定义bat脚本自启动的方法有两种:一是利用“启动”文件夹,通过创建bat脚本的快捷方式并将其放置于该文件夹;二是使用任务计划程序,创建一个启动时触发的任务来运行bat脚本。需确保脚本正确安全,避免对系统产生不良影响。
289 0
|
1月前
|
网络安全 Windows
Windows server 2012R2系统安装远程桌面服务后无法多用户同时登录是什么原因?
【11月更文挑战第15天】本文介绍了在Windows Server 2012 R2中遇到的多用户无法同时登录远程桌面的问题及其解决方法,包括许可模式限制、组策略配置问题、远程桌面服务配置错误以及网络和防火墙问题四个方面的原因分析及对应的解决方案。
|
1月前
|
监控 安全 网络安全
使用EventLog Analyzer日志分析工具监测 Windows Server 安全威胁
Windows服务器面临多重威胁,包括勒索软件、DoS攻击、内部威胁、恶意软件感染、网络钓鱼、暴力破解、漏洞利用、Web应用攻击及配置错误等。这些威胁严重威胁服务器安全与业务连续性。EventLog Analyzer通过日志管理和威胁分析,有效检测并应对上述威胁,提升服务器安全性,确保服务稳定运行。