本指南演示了如何创建自定义预览 窗体,在此窗体上显示生成的报表文档。 要查看相关总说明,请参阅 创建自定义打印预览。
要创建一个自定义预览窗体,则执行下列操作。
-
启动 MS Visual Studio (2005、2008 或 2010),并且新建一个或者打开一个现有的 Windows 窗体应用程序。
-
添加新空白报表 到项目中。 后面,将在窗体上预览此报表。 注意,报表必须包含至少一个控件,以便于能够生成预览。 因此,把任意控件拖放到报表中,来预览所需的任何复杂报表。
注意 请参阅 报表构建基础 文档来学习更多关于创建报表的基本原则。
-
然后,切换到 Form1 的设计器。
把 PrintBarManager 组件从工具箱中拖放到窗体上 (在默认情况下,该项被添加到 Visual Studio IDE 的 DX.10.2: Reporting 工具箱标签页中)。 在此操作之后,所有必需的 bars 都被自动创建,并且 PrintControl 也被添加到窗体中。
另外,还可以把 PrintControl.Dock 属性设置为 Fill,从而使 PrintControl 对象占用整个窗体区域。
注意 请确保在此步骤之后,DevExpress.XtraEditors.v10.2.dll、DevExpress.XtraBars.v10.2.dll 和 DevExpress.XtraTreeList.v10.2.dll 程序集都被添加到了项目的 引用 列表中。 如果这些程序集没有被自动添加,那么请人工添加它们。 要使 PrintBarManager 组件工作,这些是必需的。
-
注意,在这些步骤之后,PrintBarManager.PrintControl 属性将被自动设置为可用的 PrintControl 类的实例。
-
为了在 Form1 被加载时生成报表的预览,需要把下列代码添加到 Form1.Load 事件处理程序。
C# 复制代码 // Create a report. XtraReport1 report = new XtraReport1(); private void Form1_Load(object sender, EventArgs e) { // Bind the report's printing system to the print control. printControl1.PrintingSystem = report.PrintingSystem; // Generate the report's print document. report.CreateDocument(); }
Visual Basic 复制代码 ' Create a report. Dim Report As New XtraReport1() Private Sub Form1_Load(sender As Object, e As EventArgs) _ Handles Form1.Load ' Bind the report's printing system to the print control. PrintControl1.PrintingSystem = Report.PrintingSystem ' Generate the report's print document. Report.CreateDocument() End Sub
-
现在把 "Edit" 按钮添加到打印预览工具栏中。 要这样做,则选中 printBarManager1 组件,并单击其工具栏右侧的 "[Add]" 按钮。 然后在下拉列表中选择 BarButtonItem 项。
-
新创建的项被命名为 "barButtonItem1"。 把它重命名为 "EditBarButtonItem"。 同时,把它的 BarItem.Caption 属性值修改为 "Edit"、并把 BarItem.Hint 属性设置为 "Edit a report in End-User Designer"。
-
因为 EditBarButtonItem 被添加到主工具栏的尾部,因此把它拖放到正好在 "Scale" 按钮后面,如下图所示。
-
"Edit" 按钮被设计用于在最终用户设计器中编辑报表。 要这样做,则接管它的 BarItem.ItemClick 事件,并添加下列代码。
C# 复制代码 private void EditBarButtonItem_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { // Show the End-User Designer form, modally. report.ShowDesignerDialog(); // Re-generate the report's print document. report.CreateDocument(); }
Visual Basic 复制代码 Private Sub EditBarButtonItem_ItemClick(sender As Object, _ e As DevExpress.XtraBars.ItemClickEventArgs) Handles EditBarButtonItem.ItemClick ' Show the End-User Designer form, modally. Report.ShowDesignerDialog() ' Re-generate the report's print document. Report.CreateDocument() End Sub
注意 必须调用 XtraReport.ShowDesignerDialog 方法 (不是 XtraReport.ShowDesigner),此方法调用最终用户设计器,模态编辑报表。 报表不能同时被编辑和预览。
现在应用程序已经就绪。 运行它来查看自定义预览窗体如何工作。
注意,在本例中我们已经添加了一个调用最终用户设计器的工具栏按钮。 在默认情况下,每当最终用户关闭最终用户设计器窗体时,就提示最终用户选择是否把报表保存为 REPX 文件。 如果想去除此信息,那么请阅读 如何: 重写最终用户设计器中的命令 (自定义保存) 指南,在该指南中描述了如何定制最终用户设计器中的保存命令。