创建装订线边距装订线边距是一个额外区域,主要添加在装订线边缘位置。它使页面装订成文件或是小册子等操作变得简单。想要在报表中增加一个装订线边距,你需要提高奇数页MarginLeft的属性值,然后在偶数页使用缺省数值。你可以通过脚本实现该操作。想要添加一个脚本改变呈现中页面的装订线边距,你需要完成以下步骤:
'VBScript:Report.OnOpengutter=report.layout.marginleft'initializevariable'VBScript:Report.OnPagereport.layout.marginleft=_Iif(pagemod2=1,gutter,gutter-1440)
定义和使用全局变量报表中定义和使用全局变量并没有特殊的方式,但是你可以添加隐藏字段到报表中,然后使用它们的值作为全局参数。完成以下步骤,实现该功能:
Field.Name=linesPerPageField.Text=14Field.Visible=False
cnt=cnt+1detail.forcepagebreak="none"ifcnt>=linesPerPagethencnt=0detail.forcepagebreak="after"endif需要注意的是,通过修改字段的Text属性,你可以在报表呈现前设置linesPerPage字段的值。
指定自定义页面大小缺省情况下,C1Report使用默认打印机中默认页面大小创建报表。你可以使用PaperSize和Orientation属性来指定页面大小和方向。然而,C1Report在呈现前将会检查选中页面大小是否符合当前打印机规定。如果选中页面无效,则将页面参数改为缺省参数。如果你想要指定一个具体页面的大小,不管是否符合打印机规定,你可以将PaperSize属性设置为Custom,然后将CustomWidth和CustomHeight属性设置为实际页面的规模(以像素为单位)。
注意,尺寸将自动转换成像素单位。属性窗口将尺寸显示为36000(以像素为单位)。
属性窗口将尺寸显示为15840(以像素为单位)。
不管打印机页面大小的设置,下面的代码会将报表页面大小设置为25x11:!MISSINGPHRASE'ShowAll'!!MISSINGPHRASE'HideAll'!VisualBasic
VisualBasic
c1r.Layout.PaperSize=PaperKind.Customc1r.Layout.CustomHeight=25*1440'intwipsc1r.Layout.CustomWidth=11*1440
C#
c1r.Layout.PaperSize=PaperKind.Custom;c1r.Layout.CustomHeight=25*1440;//intwipsc1r.Layout.CustomWidth=11*1440;
格式化报表下面的内容主要介绍在报表中如何应用格式化。很简单,你可以修改属性窗口中的属性或是在VB脚本表达式中增加几行脚本就能够修改你的报表。增加交替变换的背景色在报表中增加交替变换的背景色,你可以使用Detail区域的OnPrint属性来改变这一区域的BackColor属性实现这一功能。完成以下步骤实现该功能:
cnt=cnt+1ifcntmod2=0thendetail.backcolor=rgb(200,220,200)elsedetail.backcolor=rgb(255,255,255)endif
在某些情况下,你也许想要根据字段内容改变一个字段的显示效果。例如,你也许想要让仓库中贵重的物品或是便宜的物品高亮显示。下面的脚本可以实现这一功能。完成以下步骤,实现该功能:
'VBScript:Detail.OnFormatIfUnitsInStock+UnitsOnOrder 根据字段值编辑字段格式你可以通过为Detail区域的OnFormat属性指定一个表达式来实现根据字段值改变报表中字段格式的功能。想要为OnFormat属性指定表达式,你需要完成以下步骤: 加载报表模板C1Report使用行数据组合报表模板来完成创建报表的工作。为了创建报表,你需要加载报表模板到C1Report中。下面将介绍几种加载报表模板的方式。从文件中加载报表模板!MISSINGPHRASE'ShowAll'!!MISSINGPHRASE'HideAll'!你可以使用C1ReportDesigner来加载报表模板文件(XML文件中将包含一个或者多个报表模板)。 设计阶段从文件中加载报表模板,你需要完成下述任务中的一种:右键单击C1Report组件,选择LoadReport菜单选项或者单击C1Report组件上的smart标签,然后从C1Report任务菜单中选择LoadReport选项。在Selectareport对话框中选择你想要加载的报表,完成以下任务: 你可以使用Load方法,从文件中加载报表模板。将你希望加载报表的报表模板文件名称和报表名称作为参数。如果你想要罗列报表模板中的报表,可以使用GetReportInfo方法。它将以列表的形式返回文件中所有报表。VisualBasic '获取报表模板文件中的报表列表DimreportsAsString()=c1r.GetReportInfo(reportFile)'把第一个报表加载到C1Report组件c1r.Load(reportFile,reports(0)) //获取报表模板文件中的报表列表 ]]> 通过字符串加载报表模板:!MISSINGPHRASE'ShowAll'!!MISSINGPHRASE'HideAll'!C1Report有一个ReportDefinition属性,该属性允许你以字符串的形式获取或者设置完整报表模板。这是一种非常方便的实现方式,你可以在数据库或者自身应用的数据结构中对报表模板进行存储和检索。ReportDefinition字符串中包含了一个完整的XML,并且存储在报表模板文件中。举例说明如下:VisualBasic '把报表加载到C1Report组件c1r.Load(reportFile,reportName)'复制报表模板到剪贴板DimrepDefAsString=c1r.ReportDefinitionClipboard.SetDataObject(repDef)'复制报表模板到c1r2组件c1r2.ReportDefinition=repDef //把报表加载到C1Report组件c1r.Load(reportFile,reportName);//复制报表模板到剪贴板stringrepDef=c1r.ReportDefinition;Clipboard.SetDataObject(repDef);//复制报表模板到c1r2组件c1r2.ReportDefinition=repDef; 修改子报表本部分主要介绍如何修改子报表。子报表是指正式报表中包含了另外一个报表的字段。主报表经常设计用于作为显示主报表中详细信息的主要场景。子报表中增加页眉C1Report在子报表中不显示页眉和页脚。它仅在主报表中使用。在MicrosoftAccess中同样如此。在多数情况下,你可能想要在子报表中页面分页中包含页眉信息。想要实现该功能,你需要将页眉放入分组页面区域,并且设置区域的Repeat属性为True。如果你的子报表并不包含分组,请添加一个空白分组。 在子报表中检索数据在某些情况下,你想要将子报表中的数据传递给主报表。脚本变量并不能实现该功能,因为每个报表都有自己的脚本作用域(这将避免变量名冲突的可能)。想要将子报表中的数据传递给主报表,你必须将值存储在子报表字段中或者在子报表的Tag属性中,然后让主报表阅读这些值。在这个例子中,子报表计算出了每个商品类别的平均价格,然后将其存储在Tag属性中。主报表检索并显示这个值。 呈现报表(预览,打印以及导出)一旦报表模板加载到组件中,并且完成数据源的定义,你就可以将报表呈现到打印机,预览控制器或者是导出成报表文件。在报表呈现过程中显示进度显示器!MISSINGPHRASE'ShowAll'!!MISSINGPHRASE'HideAll'!大多数预览应用在呈现页面时都包含进度提示,并且拥有一个按钮允许你取消报表生成。.NET打印预览控制器自动提供这一功能。如果你直接打印报表或者导出报表文件,这里并没有内置的进度显示在报表UI中。你可以使用C1Report事件创建一个报表进度对话框,或者在呈现报表时更新状态条。StartPage和EndReport事件将会有足够的反馈告诉你哪个页面正在被打印以及报表什么时候完成。例如,下述代码使用起始页事件给状态条(StatusStrip1)提供反馈。VisualBasic PrivateSubc1r_StartPage(ByValsenderAsSystem.Object,ByValeAsC1.Win.C1Report.ReportEventArgs)Handlesc1r.StartPageStatusStrip1.Text=String.Format("Renderingpage{0}of'{1}'...",c1r.Page,c1r.ReportName)EndSub privatevoidc1r_StartPage(objectsender,ReportEventArgse){statusStrip1.Text=string.Format("Renderingpage{0}of'{1}'...",c1r.Page,c1r.ReportName);} 想要在报表完成之前取消动作,增加一个取消按钮到你的应用中,然后使用它来设置C1Report的Cancel属性为True。例如:VisualBasic PrivateSub_btnCancel_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesbtnCancel.Clickc1r.Cancel=TrueClose()EndSub privatevoid_btnCancel_Click(objectsender,System.EventArgse){c1r.Cancel=true;Close();} 需要注意的是你也许还想要提供进度条以及当前是第几页的提示,但是这通常情况下很难去实现。因为页面计数器在报表呈现完成前并不知道当前正在呈现的页数。 预览报表!MISSINGPHRASE'ShowAll'!!MISSINGPHRASE'HideAll'!想要预览报表,可以使用C1Report.Document属性。在ReportforWinForms预览控制器中或者在.NET打印预览或者打印预览对话框控制器中设置Document属性。预览控制器将显示该报表,并且允许用户区浏览,缩放或者打印报表。例如:VisualBasic '加载报表模板c1r.Load(reportFile,reportName)'预览文档c1preview1.Document=c1r //加载报表模板c1r.Load(reportFile,reportName);//预览文档c1preview1.Document=c1r; 打印报表!MISSINGPHRASE'ShowAll'!!MISSINGPHRASE'HideAll'!你可以使用C1Report.Document属性来直接打印报表。这一属性返回一个标准PrintDocument对象,该对象拥有一个Print方法以及公开的打印机和页面设置。例如,下述代码显示一个打印对话框,然后打印报表:VisualBasic '加载报表模板c1r.Load(reportFile,reportName)'获取PrintDocument对象PrintDocumentdoc=c1r'显示打印对话框供用户自定义打印DimpdAsPrintDialog=NewPrintDialog()'在报表文档中使用打印机设置pd.PrinterSettings=doc.PrinterSettings'显示对话框并打印报表Ifpd.ShowDialog()=DialogResult.OKThendoc.Print()EndIf'清空并释放PrintDialog资源pd.Dispose() //加载报表模板c1r.Load(reportFile,reportName);//获取PrintDocument对象PrintDocumentdoc=c1r;//显示打印对话框供用户自定义打印PrintDialogpd=newPrintDialog();//在报表文档中使用打印机设置pd.PrinterSettings=doc.PrinterSettings;//显示对话框并打印报表if(pd.ShowDialog()==DialogResult.OK)doc.Print();//清空并释放PrintDialog资源pd.Dispose(); 导出报表!MISSINGPHRASE'ShowAll'!!MISSINGPHRASE'HideAll'! C1Report有一个RenderToFile方法,允许你按照几种不同的文件格式导出报表,其中包含HTML,RTF,PDF,TIFF,Text,和XLS等等。例如,下述代码创建一个PDF和XLS版本的报表:VisualBasic '加载报表模板c1r.Load(reportFile,reportName)'导出成PDFc1r.RenderToFile(outFile+".pdf",FileFormatEnum.PDF)c1r.RenderToFile(outFile+".xls",FileFormatEnum.Excel) //加载报表模板c1r.Load(reportFile,reportName);//导出成PDFc1r.RenderToFile(outFile+".pdf",FileFormatEnum.PDF);c1r.RenderToFile(outFile+".xls",FileFormatEnum.Excel); 输入各个属性的值,并在结束设置属性之后按下ENTER键 Creator属性的默认值是ComponentOneDocumentEngine。。通过代码应当添加以下代码至Form_Load事件。为设置Author属性,请添加以下代码:VisualBasic Me.C1PrintDocument1.DocumentInfo.Author="JaneDoe" this.c1PrintDocument1.DocumentInfo.Author="JaneDoe"; 为设置Comment属性,请添加以下代码:VisualBasic Me.C1PrintDocument1.DocumentInfo.Comment="ThisisaC1PrintDocumentfile." this.c1PrintDocument1.DocumentInfo.Comment="ThisisaC1PrintDocumentfile."; 为设置Company属性,请添加以下代码:VisualBasic Me.C1PrintDocument1.DocumentInfo.Company="ComponentOne" this.c1PrintDocument1.DocumentInfo.Company="ComponentOne"; 为设置CreationTime属性,请添加以下代码:VisualBasic Me.C1PrintDocument1.DocumentInfo.CreationTime="2/29/08" this.c1PrintDocument1.DocumentInfo.CreationTime="2/29/08"; 为设置Creator属性,请添加以下代码。默认值是ComponentOneDocumentEngine。VisualBasic Me.C1PrintDocument1.DocumentInfo.Creator="C1PrintPreview" this.c1PrintDocument1.DocumentInfo.Creator="C1PrintPreview"; 为设置Keywords属性,请添加以下代码。Keywords应当由空格分隔。VisualBasic Me.C1PrintDocument1.DocumentInfo.Keywords=NewString(){"C1PrintPreviewComponentOneC1PrintDocument"} this.c1PrintDocument1.DocumentInfo.Keywords=newstring(){"C1PrintPreviewComponentOneC1PrintDocument"}; 为设置Manager属性,请添加以下代码:VisualBasic Me.C1PrintDocument1.DocumentInfo.Manager="JohnSmith" this.c1PrintDocument1.DocumentInfo.Manager="JohnSmith"; 为设置Operator属性,请添加以下代码:VisualBasic Me.C1PrintDocument1.DocumentInfo.Operator="JoeBrown" this.c1PrintDocument1.DocumentInfo.Operator="JoeBrown"; 为设置Producer属性,请添加以下代码:VisualBasic Me.C1PrintDocument1.DocumentInfo.Producer="ComponentOnePreviewfor.NET" this.c1PrintDocument1.DocumentInfo.Producer="ComponentOnePreviewfor.NET"; 为设置RevisionTime属性,请添加以下代码:VisualBasic Me.C1PrintDocument1.DocumentInfo.RevisionTime="2/29/08" this.c1PrintDocument1.DocumentInfo.RevisionTime="2/29/08"; 为设置Subject属性,请添加以下代码:VisualBasic Me.C1PrintDocument1.DocumentInfo.Subject="DocumentCreation" this.c1PrintDocument1.DocumentInfo.Subject="DocumentCreation"; 为设置Title属性,请添加以下代码:VisualBasic Me.C1PrintDocument1.DocumentInfo.Title="CreatingDocumentswithC1PrintPreview" this.c1PrintDocument1.DocumentInfo.Title="CreatingDocumentswithC1PrintPreview"; 隐藏导航面板为了隐藏导航面板,需要设置NavigationPanelVisible属性为False。这可以通过设计器或者代码做到。 添加以下代码至Form_Load事件:VisualBasic Me.C1PrintPreviewControl1.NavigationPanelVisible=False this.c1PrintPreviewControl1.NavigationPanelVisible=false; 单击C1PrintPreviewControl1选中显示在属性窗体上,设置其Document属性为C1PrintDocument1。 '构建文档.MakeDoc()'生成文档.Me.C1PrintDocument1.Generate() //构建文档.MakeDoc(); //生成文档.this.c1PrintDocument1.Generate(); PrivateSubMakeDoc()'创建RenderText1.Dimrt1AsNewC1.C1Preview.RenderTextrt1.Text="ThisisRenderText1."'为RenderText1创建一个大纲视图条目Me.C1PrintDocument1.Outlines.Add("RenderText1",rt1)'Insertapagebreak.rt1.BreakAfter=C1.C1Preview.BreakEnum.Page'创建RenderText2。Dimrt2AsNewC1.C1Preview.RenderTextrt2.Text="ThisisRenderText2."'为RenderText2添加一个大纲视图条目。Me.C1PrintDocument1.Outlines.Add("RenderText2",rt2)'将RenderText对象添加至文档。Me.C1PrintDocument1.Body.Children.Add(rt1)Me.C1PrintDocument1.Body.Children.Add(rt2)EndSub privatevoidMakeDoc(){//创建RenderText1.C1.C1Preview.RenderTextrt1=newC1.C1Preview.RenderText();rt1.Text="ThisisRenderText1.";//为RenderText1创建一个大纲视图条目this.c1PrintDocument1.Outlines.Add("RenderText1",rt1);//插入一个分页符。rt1.BreakAfter=C1.C1Preview.BreakEnum.Page;//创建RenderText2。C1.C1Preview.RenderTextrt2=newC1.C1Preview.RenderText();rt2.Text="ThisisRenderText2."; //为RenderText2添加一个大纲视图条目。this.c1PrintDocument1.Outlines.Add("RenderText2",rt2);//将RenderText对象添加至文档。this.c1PrintDocument1.Body.Children.Add(rt1);this.c1PrintDocument1.Body.Children.Add(rt2);} //构建文档 MakeDoc();//生成文档。this.c1PrintDocument1.Generate();C# '构建文档MakeDoc()'生成文档。Me.C1PrintDocument1.Generate() TowritecodeinVisualBasic publicvoidMakeDoc(){//创建页面布局。C1.C1Preview.PageLayoutpl=newC1.C1Preview.PageLayout();//添加分栏的列pl.Columns.Add();pl.Columns.Add();pl.PageSettings=newC1.C1Preview.C1PageSettings();this.c1PrintDocument1.PageLayouts.Default=pl;//创建RenderText1。C1.C1Preview.RenderTextrt1=newC1.C1Preview.RenderText();rt1.Text="ThisisthehousethatJackbuilt.Thisisthecarrot,thatlayinthehousethatJackbuilt.Thisistherat,thatatethecarrot,thatlayinthehousethatJackbuilt.Thisisthecat,thatchasedtherat,thatatethecarrot,thatlayinthehousethatJackbuilt.";//添加分列符rt1.BreakAfter=C1.C1Preview.BreakEnum.Column; 文件格式 ExportProvider BMPImage(.bmp) BmpExportProvider C1Document(.c1d) C1dExportProvider EnhancedMetafile(.emf) EmfExportProvider GIFImage(.gif) GifExportProvider HTML(.htm) HtmlExportProvider JPEGImage(.jpg) JpegExportProvider MicrosoftExcel(.xls) XlsExportProvider OpenXMLMSExcelFile(.xlsx) XslsExportProvider PNGImage(.png) PngExportProvider RichTextFormat(.rtf) RtfExportProvider TIFFImage(.tiff) TiffExportProvider DimlpAsInteger=0Whilelp for(intlp=0;lp !MISSINGPHRASE'ShowAll'!!MISSINGPHRASE'HideAll'!为了以任意角度绘制文本,需要使用到Graphics对象,同时我们要创建一个子方法旋转文本。 PublicSubRotateText(ByValgAsGraphics,ByValfAsFont,ByValsAsString,ByValangleAsSingle,ByValbAsBrush,ByValxAsSingle,ByValyAsSingle)Ifangle>360ThenWhileangle>360angle=angle-360EndWhileElseIfangle<0ThenWhileangle<0angle=angle+360EndWhileEndIf'创建一个变换矩阵,并旋转指定角度。DimmyMatrixAsNewSystem.Drawing.Drawing2D.MatrixmyMatrix.Rotate(angle,Drawing2D.MatrixOrder.Append)'应用完变换之后绘制文本至屏幕。g.Transform=myMatrixg.DrawString(s,f,b,x,y)EndSub publicvoidRotateText(Graphicsg,Fontf,strings,Singleangle,Brushb,Singlex,Singley){if(angle>360){ while(angle>360){angle=angle-360;}}elseif(angle<0){while(angle<0){angle=angle+360;}}//创建一个变换矩阵,并旋转指定角度。System.Drawing.Drawing2D.MatrixmyMatrix=newSystem.Drawing.Drawing2D.Matrix();myMatrix.Rotate(angle,System.Drawing.Drawing2D.MatrixOrder.Append);//应用完变换之后绘制文本至屏幕。g.Transform=myMatrix;g.DrawString(s,f,b,x,y);} 在Add和Generate方法调用之前,添加以下代码至Form_Load事件:VisualBasic '设置列的颜色。table.Cols(0).Style.BackColor=Color.PapayaWhip'设置行的颜色table.Rows(0).Style.BackColor=Color.PaleTurquoise //设置列的颜色。 table.Cells(1,1).Style.Font=NewFont("Tahoma",12,FontStyle.Bold)table.Cells(1,1).Style.TextColor=Color.DarkGreen TowritecodeinC# table.Cells[1,1].Style.Font=newFont("Tahoma",12,FontStyle.Bold);table.Cells[1,1].Style.TextColor=Color.DarkGreen; Tochangethefontofatablecolumn,settheFontpropertyforthecolumn.AddthefollowingcodetotheForm_LoadeventbeforetheAddandGeneratemethods:TowritecodeinVisualBasic table.Cols(0).Style.Font=NewFont("Arial",12,FontStyle.Bold) table.Cols[0].Style.Font=newFont("Arial",12,FontStyle.Bold); Tochangethefontofatablerow,settheFontpropertyfortherow.AddthefollowingcodetotheForm_LoadeventbeforetheAddandGeneratemethods:TowritecodeinVisualBasic table.Rows(0).Style.Font=NewFont("Arial",12,FontStyle.Bold) table.Rows[0].Style.Font=newFont("Arial",12,FontStyle.Bold); table.Style.FlowAlign=FlowAlignEnum.Center table.Style.FlowAlign=FlowAlignEnum.Center; '创建一个矩形,添加两条交叉对角线。DimrectAsNewRenderRectangle(NewUnit(3,UnitTypeEnum.Cm),NewUnit(3,UnitTypeEnum.Cm)) C#C# //创建一个矩形,添加两条交叉对角线。RenderRectanglerect=newRenderRectangle(newUnit(3,UnitTypeEnum.Cm),newUnit(3,UnitTypeEnum.Cm));RenderLinerl1=newRenderLine(newUnit(0,UnitTypeEnum.Cm),newUnit(0,UnitTypeEnum.Cm),newUnit(3,UnitTypeEnum.Cm),newUnit(3,UnitTypeEnum.Cm),LineDef.Default);RenderLinerl2=newRenderLine(newUnit(3,UnitTypeEnum.Cm),newUnit(0,UnitTypeEnum.Cm),newUnit(0,UnitTypeEnum.Cm),newUnit(3,UnitTypeEnum.Cm),LineDef.Default);rect.Style.BackColor=Color.PeachPuff;//添加对象至表格。 '构建文档。MakeDoc()'生成文档。Me.C1PrintDocument1.Generate() //构建文档。MakeDoc();//生成文档。this.c1PrintDocument1.Generate(); PrivateSubMakeDoc()'创建RenderText。Dimrt1AsNewC1.C1Preview.RenderTextrt1.Text="ThisisRenderText.ARenderImagewillbeonpage2andaRenderGraphiconpage3."'添加一个分页符。rt1.BreakAfter=C1.C1Preview.BreakEnum.Page'创建RenderImage。Dimri1AsNewC1.C1Preview.RenderImageri1.Image=System.Drawing.Image.FromFile("c:\c1logo.bmp")'添加一个分页符。ri1.BreakAfter=C1.C1Preview.BreakEnum.Page'创建一个RenderGraphic。Dimrg1AsNewC1.C1Preview.RenderGraphics()rg1.Graphics.FillEllipse(Brushes.DarkBlue,200,200,150,150)rg1.Graphics.FillPie(Brushes.DarkRed,200,200,150,150,-45,75)'添加RenderObjects至文档。Me.C1PrintDocument1.Body.Children.Add(rt1)Me.C1PrintDocument1.Body.Children.Add(ri1)Me.C1PrintDocument1.Body.Children.Add(rg1)EndSub privatevoidMakeDoc(){//创建RenderText。C1.C1Preview.RenderTextrt1=newC1.C1Preview.RenderText();rt1.Text="ThisisRenderText.ARenderImagewillbeonpage2andaRenderGraphiconpage3.";//添加一个分页符。rt1.BreakAfter=C1.C1Preview.BreakEnum.Page;//创建RenderImage。C1.C1Preview.RenderImageri1=newC1.C1Preview.RenderImage();ri1.Image=System.Drawing.Image.FromFile("c:c1logo.bmp");//添加一个分页符。ri1.BreakAfter=C1.C1Preview.BreakEnum.Page;//创建一个RenderGraphic。C1.C1Preview.RenderGraphicsrg1=newC1.C1Preview.RenderGraphics();rg1.Graphics.FillEllipse(Brushes.DarkBlue,200,200,150,150);rg1.Graphics.FillPie(Brushes.DarkRed,200,200,150,150,-45,75);//添加RenderObjects至文档。this.c1PrintDocument1.Body.Children.Add(rt1);this.c1PrintDocument1.Body.Children.Add(ri1);this.c1PrintDocument1.Body.Children.Add(rg1);} 通过向Form_Load事件添加以下代码,您可以在运行时修改C1PrintDocument的页面设置:VisualBasic Me.C1PrintDocument1.PageLayout.PageSettings.Landscape=True this.c1PrintDocument1.PageLayout.PageSettings.Landscape=true; 此外,您还有机会在运行文档时,在C1PrintDocument的预览界面修改页面设置,通过页面设置对话框。 字段名称 描述 Paper Orientation 选择打印方向,纵向或者横向。 Margins 自定义C1PrintDocument的页边距(上下左右)。 页面设置对话框具有以下命令按钮: 按钮名称 OK 应用设置到C1PrintDocument。 Cancel 取消对文档所做的页面设置的更改。 Printer 修改或查看打印机设置。 PrivateSubMakeDoc()'为文档定义页面布局。DimplAsNewC1.C1Preview.PageLayout()pl.PageSettings=NewC1.C1Preview.C1PageSettings()pl.PageSettings.PaperKind=System.Drawing.Printing.PaperKind.LegalMe.C1PrintDocument1.PageLayouts.Default=plEndSub privatevoidMakeDoc(){//为文档定义页面布局。C1.C1Preview.PageLayoutpl=newC1.C1Preview.PageLayout();pl.PageSettings=newC1.C1Preview.C1PageSettings();pl.PageSettings.PaperKind=System.Drawing.Printing.PaperKind.Legal;this.c1PrintDocument1.PageLayouts.Default=pl;} ImportsC1.C1Preview usingC1.C1Preview; PrivateSubForm1_Load(ByValsenderAsSystem.Object,ByValeAs System.EventArgs)HandlesMyBase.Load'创建一个新的RenderImage,使用您的图片名称和位置替换c1logo.png。DimimgAsNewC1.C1Preview.RenderImageimg.Image=Image.FromFile("C:\c1logo.png")'缩放图片为可用页面尺寸的50%,图片的高度将自动缩放。img.Width="50%"'Createthedocument.C1PrintDocument1.StartDoc()C1PrintDocument1.RenderBlock(img)C1PrintDocument1.EndDoc()EndSub privatevoidForm1_Load(objectsender,EventArgse){//创建一个新的RenderImage,使用您的图片名称和位置替换c1logo.png。C1.C1Preview.RenderImageimg=newC1.C1Preview.RenderImage();img.Image=Image.FromFile("C:c1logo.png");//缩放图片为可用页面尺寸的50%,图片的高度将自动缩放。img.Width="50%";//创建文档。c1PrintDocument1.StartDoc();c1PrintDocument1.RenderBlock(img);c1PrintDocument1.EndDoc();} PrivateSubForm1_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesMyBase.Load'创建水印和布局DimwaterMarkAsNewRenderImage DimplAsNewC1.C1Preview.PageLayout()'设置水印图像;使用自己的图片替换c1logo.png。waterMark.Image=Image.FromFile("c:\c1logo.png")waterMark.Y=NewUnit(2,UnitTypeEnum.Inch)pl.Watermark=waterMarkMe.C1PrintDocument1.PageLayout=pl'生成文档。Me.C1PrintDocument1.Generate()EndSubC# privatevoidForm1_Load(objectsender,EventArgse){//创建水印和布局RenderImagewaterMark=newRenderImage();C1.C1Preview.PageLayoutpl=newC1.C1Preview.PageLayout();//设置水印图像;使用自己的图片替换c1logo.png。waterMark.Image=Image.FromFile("c:c1logo.png");waterMark.Y=newUnit(2,UnitTypeEnum.Inch);pl.Watermark=waterMark;this.c1PrintDocument1.PageLayout=pl;//生成文档。this.C1PrintDocument1.Generate();} 在Form_Load事件中添加以下代码以设置ZoomMode为PageWidth:VisualBasic Me.C1PrintPreviewControl1.PreviewPane.ZoomMode=C1.Win.C1Preview.ZoomModeEnum.PageWidth this.c1PrintPreviewControl1.PreviewPane.ZoomMode=C1.Win.C1Preview.ZoomModeEnum.PageWidth; AddHandlerPreviewPane.ContextMenuStrip.Opening,AddressOfContextMenuStrip_Opening PreviewPane.ContextMenuStrip.Opening+=newCancelEventHandler(ContextMenuStrip_Opening); PrivateSubContextMenuStrip_Opening(ByValsenderAsObject,ByValeAsCancelEventArgs)DimcmsAsSystem.Windows.Forms.ContextMenuStrip=DirectCast(sender,System.Windows.Forms.ContextMenuStrip)ForEachitemAsToolStripItemIncms.ItemsIfitem.Tag=ContextMenuTags.CopyThenitem.Visible=FalseEndIfNextEndSub voidContextMenuStrip_Opening(objectsender,CancelEventArgse){System.Windows.Forms.ContextMenuStripcms=(System.Windows.Forms.ContextMenuStrip)sender;foreach(ToolStripItemitemincms.Items)if(item.Tag==ContextMenuTags.Copy)item.Visible=false;} 当您右键单击C1PrintPreviewControl控件上的预览面板时,可以注意到上下文菜单上不包含标准的"Copy"菜单项。禁用上下文菜单!MISSINGPHRASE'ShowAll'!!MISSINGPHRASE'HideAll'!当运行时通过右键单击一个C1PreviewPane时,会出现一个默认的上下文菜单。此上下文菜单包含操作预览的设置。您可以在代码中通过将C1PreviewPane的ContextMenuStrip属性设置为null禁用该上下文菜单。注意,这一操作无法通过设计器完成,只能通过代码做到。但是您可以在设计器中使用您自己的上下文菜单覆盖默认的菜单(通过在Form窗体上拖拽一个ContextMenuStrip组件,并设置C1PreviewPane的ContextMenuStrip至该组件)。当时用C1PrintPreviewControl控件时,预览面板可以通过控件上的PreviewPane属性进行访问。在Form_Load事件中添加以下代码以禁用C1PrintPreviewControl控件上的上下文菜单:VisualBasic Me.C1PrintPreviewControl1.PreviewPane.ContextMenuStrip=Nothing this.c1PrintPreviewControl1.PreviewPane.ContextMenuStrip=null; 您所达到的效果当您在C1PrintPreviewControl控件的预览面板右键单击时,不会出现默认的上下文菜单。