以编程方式将标题设置为XtraReport中的查看器表单

时间:2009-09-09 19:11:31

标签: c# devexpress xtrareport

在显示XtraReport文档时,有人知道如何设置表单查看器的标题吗? 方案如下:

我配置了一个XtraReport报告,我展示它调用ShowPreviewDialog方法,打开一个查看器表单并显示该文档。我需要将标题设置为此查看器表单,但无法找到完成此操作的属性或方法。

提前致谢。

6 个答案:

答案 0 :(得分:5)

编辑:显然,如果您不调用CreateDocument,它有时会显示有效,有时则不然。所以确保它在那里(我在第一篇文章中遗漏了它)。

我相信凯尔的答案是不正确的。看来您可以访问表单,这只是不直观。正如皮埃尔指出的那样,创建自己的表单是有正当理由的,但是如果您找到默认表单并且只想自定义标题,那么请尝试:

using(var rpt = new XtraReport1())
{
   rpt.PrintingSystem.PrintPreviewFormEx.Text = "My Custom Caption";
   rpt.CreateDocument();
   rpt.ShowPreviewDialog();
}

答案 1 :(得分:2)

我不相信XtraReport对象使用的预览表单是以简单设置标题的方式公开的。但是,可以create your own preview form。这样可以让您最终控制预览的显示方式。不幸的是,使用该方法需要您以不同方式调用预览。您将不再调用myReport.ShowPreviewDialog()。在该示例中,报表是在窗体的load事件中创建的预览窗体的私有成员。但是我会在加载之前将对现有报表对象的引用传递给表单,以便您可以重复使用一个打印预览表单。

答案 2 :(得分:2)

在我们的项目中,我们总是最终创建一个ReportViewer表单,目的是显示XtraReport(或PrintingSystem)。

查看器由一个普通的XtraForm组成,我们在其上放置一个PrintRibbonController。这将自动创建功能区栏和打印控件。

然后我们使用一种将报告绑定到查看器的方法:

public partial class ReportViewer : DevExpress.XtraEditors.XtraForm
{
    public ReportViewer()
    {
        InitializeComponent();
    }

    // Used when displaying a single report
    public void SetReport(XtraReport report)
    {
        this.printControl.PrintingSystem = report.PrintingSystem;
        report.CreateDocument();
        this.printControl.UpdatePageView();
    }

    // Used when displaying merged reports
    public void SetReport(PrintingSystem system)
    {
        this.printControl.PrintingSystem = system;
        this.printControl.UpdatePageView();
    }
}

因此,显示报告的方式如下:

ReportViewer viewer = new ReportViewer();
viewer.SetReport(new EmployeeReport());
viewer.Show();

这种创建自己的查看器的方法可以帮助您:

  • 管理用户的安全性(例如:普通用户无法更改水印),
  • 通过删除或添加按钮来更改功能区以满足您的要求。

答案 3 :(得分:2)

我认为有一篇关于devexpress支持的文章可能对你有所帮助 - Unable to change report preview window titlebar caption

它的要点:

XtraReport1 rep = new XtraReport1();
            rep.CreateDocument();
            PrintPreviewFormEx form = new PrintPreviewFormEx();
            form.Text = "test";
            form.PrintingSystem = rep.PrintingSystem;
            form.Show(); 

答案 4 :(得分:0)

您可以使用ReportPrintTool课程解决问题:

var report = new MyXtraReport();
ReportPrintTool reportPrintTool = new ReportPrintTool(report);
reportPrintTool.PreviewForm.Text = "Some Text"
report.ShowPreviewDialog();    

答案 5 :(得分:0)

我发现Pierre的答案非常有用 - 拥有自己的自定义Report Viewer确实可以帮助您管理访问等。我添加了这段代码:

 PrintingSystemCommand[] commands = {PrintingSystemCommand.DocumentMap,
                                                   PrintingSystemCommand.Open,
                                                   PrintingSystemCommand.Save};

 this.printControl1.PrintingSystem.SetCommandVisibility(commands, CommandVisibility.None);

当然,你必须有参考资料:

using DevExpress.XtraEditors;
using DevExpress.XtraReports.UI;
using DevExpress.XtraPrinting;

再次感谢。